numpy 기초 정리

numpy import 하기

import numpy as np

numpy array 기본 생성

nd1 = np.array([[1,2], [3,4]])
nd1
array([[1, 2, 3],
       [3, 4, 1]])

numpy 주요 속성

nd1.ndim     ## 차원(rank)
nd1.size       ## 전체 요소 개수
nd1.shape    ## axis별 길이, 예를 들면, 행과 열의 길이
nd1.dtype    ## 데이터 타입

list 기반 array 생성 방법

list_1 = [2, 3, 4, 5, 6]
list_2 = [[1, 3, 9], [2, 4,  5]]

np1 = np.array(list_1)
print(np1)
np2 = np.array(list_2)
print(np2)
[2 3 4 5 6]
[[1 3 9]
 [2 4 5]]

arange를 이용한 array 생성

np3 = np.arange(1, 10, 1)
np3
array([1, 2, 3, 4, 5, 6, 7, 8, 9])

인자값 : arange([start,] stop[, step,], dtype=None)

1차원 array

arr = np.array([3,4,5,6])
print(arr[0], arr[1], arr[2], arr[3])
arr[0] = -1
print(arr[0])
3 4 5 6
-1

2차원 array

arr2 = np.array([[-1, -2, -3],
                 [1, 2, 3]])
print(arr2)
print(arr2[0,0], arr2[0,1])
[[-1 -2 -3]
 [ 1  2  3]]
-1 -2

np.linspace

start, stop 구간에 num 개수만큼의 수를 생성

arr4 = np.linspace(1, 10, 11)
print(arr4)      # 결과가 다를 수 있음
[ 1.   1.9  2.8  3.7  4.6  5.5  6.4  7.3  8.2  9.1 10. ]

인자값: linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None, axis=0)

np.reshape

2차원 array 형태로 변경

arr = np.arange(1, 21)
print(arr)
print(arr.reshape(4, 5))
print(arr.reshape(5, -1))    # -1은 자동으로 계산 해줌
[ 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20]
[[ 1  2  3  4  5]
 [ 6  7  8  9 10]
 [11 12 13 14 15]
 [16 17 18 19 20]]
[[ 1  2  3  4]
 [ 5  6  7  8]
 [ 9 10 11 12]
 [13 14 15 16]
 [17 18 19 20]]

값이 0인 array 생성

arr = np.zeros((4, 3))    # 4행 3열
print(arr)
[[0. 0. 0.]
 [0. 0. 0.]
 [0. 0. 0.]
 [0. 0. 0.]]

값이 특정값인 array 생성

arr = np.full((5,5), 9)
print(arr)
[[9 9 9 9 9]
 [9 9 9 9 9]
 [9 9 9 9 9]
 [9 9 9 9 9]
 [9 9 9 9 9]]

랜덤 array 생성

arr = np.random.random((3,3))
print(arr)
[[0.85777186 0.30972185 0.68516839]
 [0.63169974 0.7340727  0.91552124]
 [0.45381733 0.84770997 0.88914974]]

dtype 변경하기

arr = np.array([1,2,3,4,5])
print(arr.astype(np.float64))
[1. 2. 3. 4. 5.]

array 연산

a = np.array([[1,2], [3,4]], dtype=np.float64)
b = np.array([[5,6], [7,8]], dtype=np.float64)

print("덧셈")
print(a + b)
print(np.add(a,b))

print("뺄셈")
print(a - b)
print(np.subtract(a, b))

print("곱셈")
print(a * b)
print(np.multiply(a, b))

print("나눗셈")
print(a / b)
print(np.divide(a, b))
덧셈
[[ 6.  8.]
 [10. 12.]]
[[ 6.  8.]
 [10. 12.]]
뺄셈
[[-4. -4.]
 [-4. -4.]]
[[-4. -4.]
 [-4. -4.]]
곱셈
[[ 5. 12.]
 [21. 32.]]
[[ 5. 12.]
 [21. 32.]]
나눗셈
[[0.2        0.33333333]
 [0.42857143 0.5       ]]
[[0.2        0.33333333]
 [0.42857143 0.5       ]]

array 슬라이싱

x = np.array([[1,2,3,4],
              [5,6,7,8],
              [9,10,11,12]])
print(x[:2, 1:3])           # 0 ~ 2까지 행, 1 ~ 3까지 열
[[2 3]
 [6 7]]

Leave a Reply