-다차원 배열을 효과적으로 처리
-List에 비해 빠르고 강력한 기능
- .shape : 각 차원의 크기 알려줌, .dtype : 자료형 알려줌, .ndim : 차원
-> dtype은 특정 데이터를 해석하기 위해 필요한 정보 담고 있는 특수 객체- array.astype() 으로 배열의 dtype 변환 가능
-> return 값으로 있으므로 초기화 해야- np.array() 이용해 넘겨받은 데이터가 들어있는 새로운 NumPy 배열 생성.
- .zeros() , .ones() : 주어진 길이나 모양에 각각 0과 1이 들어 있는 배열 생성, .empty() : 초기화 되지 않은 배열
- for 문 작성하지 않고 데이터 일괄 처리 가능 - 벡터화
-> ex) arr*arr, arr**0.5 등- 배열 조각은 원본배열의 뷰, 데이터 복사되지 않고 그대로 원본 배열에 반영
->복사 얻고 싶다면 .copy() 사용- 2차원 배열에서 각 인덱스에 해당하는 요소는 1차원 배열.
arr2d[0][0] == arr2d[0,1] , 동일한 표현이다.
names = ['Bob', 'Joe', 'Will', 'Bob', 'Joe', 'Joe'] data = np.random.randn(7,4) data[names=='Bob’ ] # 일치하는 행 array로 리턴
- ~(names == ‘Bob’): ~ 연산자는 반대로 쓰고 싶을 때 사용
- & , | 도 사용 가능.
1차원 축 (행) : axis 0 - Vector
2차원 축 (열) : axis 1 - Matrix
3차원 축 (채널) : axis 2 - Tensor
array1 = np.arange(4) array2 = np.zeros((4,4), dtype = float) array3 = np.ones((3,3), dtype = str) array4 = np.random.randint(0,10,(3,3)) #평균 0 , 표준편차 1인 배열 array5 = np.random.normal(0,1,(3,3))
array1 = np.array([1,2,3])
array2 = np.array([4,5,6])
array3= np.concatenate([array1, array2])
array1= np.array([1,2,3,4])
array2= np.reshape((2,2))
array1 = np.arange(4).reshape(1, 4)
array2 = np.arange(8).reshape(2, 4)
array3= np.concatenate([array1, array2], axis=0)
array = np.arange(8).reshape(2, 4)
left,right = np.split(array, [2], axis=1) #왼쪽 오른쪽으로 2x2 로 나눔
import numpy as np
array = np.random.randint(1,10,size=4).reshape(2,2)
print(array)
[[7 9]
[5 3]]
result_array = array * 10
print(result_array)
[[70 90]
[50 30]]
array1 = np.arange(4).reshape(2,2)
array2 = np.arange(2)
array1 + array2
array([[0, 2],
[2, 4]])
array1 = np.arange(0,8).reshape(2,4)
array2 = np.arange(0,8).reshape(2,4)
array3 = np.concatenate([array1,array2],axis=0)
array4 = np.arange(0,4).reshape(4,1)
print(array3+array4)
[[ 0 1 2 3]
[ 5 6 7 8]
[ 2 3 4 5]
[ 7 8 9 10]]
: 각 원소에 대해 체크
array1 = np.arange(16).reshape(4,4)
print(array)
array2 = array1<10
print(array2)
array1[array2] = 100
print(array1)
[[7 9]
[5 3]]
[[ True True True True]
[ True True True True]
[ True True False False]
[False False False False]]
[[100 100 100 100]
[100 100 100 100]
[100 100 10 11]
[ 12 13 14 15]]
array = np.arange(16).reshape(4,4)
print(np.max(array), np.min(array), np.sum(array), np.mean(array))
print(array)
print("합계: ", np.sum(array,axis=0))
15 0 120 7.5
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]]
합계 [24 28 32 36]
import numpy as np
array = np.arange(0,10)
np.save('saved.npy',array)
result = np.load('saved.npy')
print(result)
[0 1 2 3 4 5 6 7 8 9]
array1 = np.arange(0,10)
array2= np.arange(10,20)
np.savez('saved.npz',array1=array1,array2=array2)
data = np.load('saved.npz')
result1= data['array1']
result2 = data['array2']
print(result1,'\n',result2)
[0 1 2 3 4 5 6 7 8 9]
[10 11 12 13 14 15 16 17 18 19]
array = np.array([5,9,10,3,7])
array.sort()
print(array)
#내림차순
print(array[::-1])
[ 3 5 7 9 10]
[10 9 7 5 3]
array = np.array([[9,1,3,5,10],[5,2,6,10,9]])
print(array)
array.sort(axis=0)
print(array)
[[ 9 1 3 5 10]
[ 5 2 6 10 9]]
[[ 5 1 3 5 9]
[ 9 2 6 10 10]]
#균일한 간격으로 데이터 생성
array = np.linspace(0,10,5)
print(array)
[ 0. 2.5 5. 7.5 10. ]
#난수의 재현 (실행마다 결과 동일)
np.random.seed(7)
print(np.random.randint(0,10,(2,3)))
[[4 9 6]
[3 3 7]]
#numpy 배열 객체 복사
array1 = np.arange(0,10)
array2 = array1.copy()
array2[0]=100
print(array1)
[0 1 2 3 4 5 6 7 8 9]
#중복 원소 제거
array = np.array([1,1,2,3,4,5,5,6,6])
print(np.unique(array))
[1 2 3 4 5 6]