-> 튜플로 반환
//1차원 배열
arr=np.array([1,2,3])
print(arr.shape)
> (3,)
//2차원 배열
arr=np.array([1,2,3],[4,5,6])
print(arr.shape)
> (2,3)
arr=np.array([1,2,3],[1,2,3])
print(arr.dtype)
> dtype('int')
arr=np.array([1,2,3],[1,2,3])
print(arr.ndim)
> 2
arr=np.array([1,2,3],[1,2,3])
print(arr.size)
> 6
-> 8비트 = 1바이트
arr=np.array([[1,2,3],[1,2,3]])
//int는 int64로 자동 지정
print(arr.ndim) // 8바이트 * 6개
> 48
arr=np.array([1],[2],[3],[4],[5],[6],[7],[8],[9])
arr.reshape(8,) //1차원 배열 array([1,2,3,4,5,6,7,8])로 크기 변경 (콤마 안찍어도 괜찮음)
arr.reshape(1,-1) //2차원 배열 array([[1,2,3,4,5,6,7,8]])로 크기 변경
arr.reshape(2,4) //2X4 행렬로 변형
arr.reshape(2,2,2) //2X2X2 행렬로 변경
arr.reshape(-1,2) //4X2 행렬로 변형
//-1: size를 기반으로 row 개수 선정
-> np.array(리스트 또는 튜플, dtype=데이터 타입(데이터타입만 써도됨))
-> ndarray 배열 생성(numpy dimension array)
np.array([[1,2,3,4],[5,6,7,8]], dtype=int)
> array[[1,2,3,4],
[5,6,7,8]]
-> np.arrange( 시작점(생략시 0), 끝점(미포함), step size(생략시 1) )
-> 실수 단위 표현 가능
-> numpy array 자료형 반환 (넘파이 연산 가능)
np.arange(10)
> array([0,1,2,3,4,5,6,7,8,9])
np.arange(1,15,2)
> array([1,3,5,7,9,11,13])
#2번(0행렬)
b=np.zeros((2,2))
//Numpy 배열의 기본 데이터 타입은 부동소수점(floating point) 숫자
> array([0.,0.],[0.,0.])
b=np.zeros((2,2),dtype=int)
//만약 정수로 표현하고 싶다면 다음과 같이 데이터 타입을 설정해줘야 함.
#3번(1행렬)
c=np.ones((3,2))
> array([1.,1.],[1.,1.],[1.,1.])
#4번(지정값 행렬)
d=np.full((2,3),10)
//10이라는 정수형 타입으로 채우겠다고 이미 명시하였으므로 데이터 타입은 int
> array[[10,10,10],[10,10,10]]
#5번(단위행렬E)
e=np.eye(3)
> array[[1.,0.,0.],[0.,1.,0.],[0.,0.,1.]]
a=np.arrange(5,15)
# a=[5,6,7,8,9,10,11,12,13,14]
np.where(a>10)
> array[6,7,8,9]
a=np.arange(5,15)
# a=[[15, 8, 12], [11, 7, 3]]
np.where(a>10)
//(0,0): 15
//(0,2): 12
//(1,0): 11
> array([0,0,1]), array([0,2,0])
-> np.where( 조건 , 참일 경우 반환값 , 거짓일 경우 반환값 )
a=np.array([15,8,12],[11,7,3])
np.where(a>10,a,10)
//a가 10보다 크면 그대로, 그렇지 않으면 10 반환
> array([[15,10,12],[11,10,10]])
-> 배열에서 중복된 값들 제거한 배열 반환해주는 함수
-> 오름차순으로 정렬
arr=np.array([0,1,1,0,2,2,2])
unique_values=np.unique(arr)
print(unique_values)
> [0,1,2]
-> np.linspace( 시작값 , 끝값 , 생성할값의개수 , ... )
arr=np.linspace(0,10,6)
print(arr)
> [0,2,4,6,8,10]
-> np.meshgrid( x값 범위 배열, y값 범위 배열 )
-> 직사각형의 격자 그리트 만드는 함수
import numpy as np
import matplotlib.pyplot as plt
a=np.linspace(0,10,5)
b=np.linspace(0,10,5)
x,y=np.meshgrid(a,b)
plt.scatter(x,y)
plt.show()
np.random.randint: 균일 분포의 정수 난수 1개 생성
np.random.rand: 0부터 1 사이의 균일 분포에서 난수 matrix array 생성
np.random.randn: 가우시안 표준 정규 분포에서 난수 matrix array 생성
np.random.RandomState: 난수생성기 만들기
다차원 배열을 1차원 배열로 변환
-> arr.ravel(): 1차원 배열을 반환
-> arr.flatten(): 1차원 배열의 복사본 반환
-> np.reshape(): 데이터 변경 없이 형상만 변경하여 반환
flatten 함수
-사본 형식으로 원본을 복사함
-즉, 원본을 변경해도 사본에는 영향을 받지 않으며,
사본을 변경해도 원본에 변화 없음
ravel 함수, reshape 함수
-변화가 있으면 원본에도 영향을 미침.
-> 내적/행렬곱 계산하는 함수 (2개의 input만 받음)
-> 1차원 배열끼리의 곱셈은 내적으로 연산 (np.inner도 행렬의 내적 계산하는 함수)
np.dot([a,b],[c,d]) = ac+bd