[numpy] np.array, np.zeros, np.ones, np.reshape

2025. 7. 9. 06:14python/numpy

1. np. array : numpy를 이용해 array 형태로 바꿔준다. 사용법은 다음과 같다. 

import numpy as np 
arr1 = np.array([1,2,3])

 

2. np.zeros : numpy를 이용해 array를 만드는데 이때 값들을 0으로 초기화해 준다. 

import numpy as np 
arr1 = np.zeros((3,2),dtype='int32')

 

3. np.ones : numpy를 이용해 array를 만드는데 이때 값들을 1로 초기화해 준다. 

import numpy as np 
arr1 = np.ones((3,2),dtype='int32')

 

4. np.reshape : 기존의 array의 shape을  수정할 때 사용한다. 

list라는 기존의 array가 있을 때 이 list의 shape을 수정하고 싶다. 이때 reshape method를 사용하고 값으로 (-1,2)를 입력했다. 여기서 -1이라는 것은 "나머지값을 나한테 할당해 줘"라고 해석하면 된다. 따라서, 4개의 element로 구성된 1차원 array에서 axis1을 두 개로 설정하고 나머지는 axis0으로 설정해 달라는 뜻이다. 계산하면, axis1 은 2개 axis0는 2개이다.(4/2) 따라서 shape를 계산하면 (2,2)가 나오게 된다. 

 이 method를 쓸 때는 결국 shape를 바꾸고 싶을 때일 것이다. 따라서, 3차원을 2차원으로 바꾸고 싶다면 인자 2개 , 2차원을 1차원으로 바꾸고 싶다면 인자 1개를 넣어주면 된다. 

import numpy as np 
list = np.array([1,2,3,4])  
arr1 = list.reshape(-1,2)
import numpy as np 
list = np.array([1,2,3,4])  
arr1 = list.reshape(-1,2) 
arr2 = arr1.reshape(-1,)

 

5. array.shape , array.ndim : 전자는 array의 shape를 반환한다. 후자는 array의 dimension을 반환한다. 

 

6. array indexing : 특정 element를 뽑아낼 때 사용한다. 

import numpy as np 
arr1 = np.array([1,2,3,4,5]) 
arr1[3] 
arr2 = np.array([[1,2,3],[4,5,6]]) 
arr2[1][1]
arr2[:,1:]

 

7. fancy indexing : 내가 원하는 값만 뽑아내고 싶을 때 사용한다. 이 방법의 장점은 연속적인 값들을 뽑지 않을 수 있다는 것이다. 

# fancy indexing 
arr1 = np.array([1,2,3,4,5,6,7,8]) 
arr1[[2,4,7]]

 

8. boolean indexing : True / False로 조건을 걸어 값을 추출하는 법이다. 

# boolean indexing 
arr1 = np.arange(start=0, stop=10) 
arr1[arr1 > 5]

 

9. sort , argsort : sort는 단순히 값을 sorting 할 때 사용한다. 하지만 argsort는 값을 sorting 하고 난 후 index를 반환한다. 

import numpy as np 
arr1 = np.array([3,1,9,5]) 
arr2 = np.sort(arr1) 
arr3 = np.sort(arr1)[::-1] 
arr2.sort() 

# argsort 
arr2 = np.argsort(arr1) 
names = np.array(['gh','hb', 'cy', 'bell']) 
scores = np.array([90,94,64,93]) 
scores_argsort = np.argsort(scores) 

names[scores_argsort]

위의 예제에서 볼 수 있듯이 argsort는 score를 sorting 한 후, 그 index값을 기반으로 names에 fancy indexing을  사용해 누가 누구인지 mapping 할 수 있다. 유용하다. 

 

10. np.dot , np.transpose : 전자는 내적이다. 두 행렬을 numpy의 dot method를 이용해 내적 값을 구한다. 후자는 transpose method를 통해 전치행렬을 구할 때 이용한다. 

# linear algebra ; dot 
import numpy as np 
arr1 = np.array([[1,2,3],[4,5,6]]) 
arr2 = np.array([[7,8],[9,10],[11,12]]) 
dot_product = np.dot(arr1,arr2) 
dot_product
import numpy as np 
arr1 = np.array([[1,2,3],[4,5,6]]) 
transpose_mat = np.transpose(arr1) 
transpose_mat