NumPy: the absolute basics for beginners 문서를 순서대로 진행
array_example = np.array([[[0, 1, 2, 3],
[4, 5, 6, 7]],
[[0, 1, 2, 3],
[4, 5, 6, 7]],
[[0 ,1 ,2, 3],
[4, 5, 6, 7]]])
array_example.ndim
3
array_example.size
24
array_example.shape
(3, 2, 4)
a = np.array([[1, 4], [3, 1]])
array([[1, 4],
[3, 1]])
np.sort(a, axis=0)
array([[1, 1],
[3, 4]])
np.sort(a, axis=1)
array([[1, 4],
[1, 3]])
np.sort(a, axis=-1)
array([[1, 4],
[1, 3]])
a = np.array([[1 , 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
array([[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12]])
five_up = (a >= 5)
print(a[five_up])
[ 5 6 7 8 9 10 11 12]
divisible_by_2 = a[a%2==0]
print(divisible_by_2)
[ 2 4 6 8 10 12]
c = a[(a > 2) & (a < 11)]
print(c)
[ 3 4 5 6 7 8 9 10]
x = np.arange(1, 25).reshape(2, 12)
x
array([[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
[13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]])
np.hsplit(x, 3)
[array([[ 1, 2, 3, 4],
[13, 14, 15, 16]]),
array([[ 5, 6, 7, 8],
[17, 18, 19, 20]]),
array([[ 9, 10, 11, 12],
[21, 22, 23, 24]])]
np.hsplit(x, (3, 5))
[array([[ 1, 2, 3],
[13, 14, 15]]),
array([[ 4, 5],
[16, 17]]),
array([[ 6, 7, 8, 9, 10, 11, 12],
[18, 19, 20, 21, 22, 23, 24]])]
np.hsplit(x, (3, -2))
[array([[ 1, 2, 3],
[13, 14, 15]]),
array([[ 4, 5, 6, 7, 8, 9, 10],
[16, 17, 18, 19, 20, 21, 22]]),
array([[11, 12],
[23, 24]])]
브로드캐스팅이 가능하려면 각 행렬들의 차원이 동등하거나, 1이어야 한다. 마치 행렬의 크기가 다르면 곱셈에 제약이 걸리는 것과 비슷하다.
브로드캐스팅 가능
A (2d array): 5 x 4
B (1d array): 1
Result (2d array): 5 x 4
A (2d array): 5 x 4
B (1d array): 4
Result (2d array): 5 x 4
A (3d array): 15 x 3 x 5
B (3d array): 15 x 1 x 5
Result (3d array): 15 x 3 x 5
A (3d array): 15 x 3 x 5
B (2d array): 3 x 5
Result (3d array): 15 x 3 x 5
A (3d array): 15 x 3 x 5
B (2d array): 3 x 1
Result (3d array): 15 x 3 x 5
A (1d array): 3
B (1d array): 4 # trailing dimensions do not match
A (2d array): 2 x 1
B (3d array): 8 x 4 x 3 # second from last dimensions mismatched
a = np.array([1.0, 2.0, 3.0])
b = 2.0
a * b
array([2., 4., 6.])
data.reshape(2, 3)
array([[1, 2, 3],
[4, 5, 6]])
data.reshape(3, 2)
array([[1, 2],
[3, 4],
[5, 6]])
arr = np.arange(6).reshape((2, 3))
arr
array([[0, 1, 2],
[3, 4, 5]])
arr.transpose()
array([[0, 3],
[1, 4],
[2, 5]])
arr.T
array([[0, 3],
[1, 4],
[2, 5]])
arr_2d = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
# 모두 뒤집기
reversed_arr = np.flip(arr_2d)
print(reversed_arr)
[[12 11 10 9]
[ 8 7 6 5]
[ 4 3 2 1]]
# 행만 뒤집기
reversed_arr_rows = np.flip(arr_2d, axis=0)
print(reversed_arr_rows)
[[ 9 10 11 12]
[ 5 6 7 8]
[ 1 2 3 4]]
# 열만 뒤집기
reversed_arr_columns = np.flip(arr_2d, axis=1)
print(reversed_arr_columns)
[[ 4 3 2 1]
[ 8 7 6 5]
[12 11 10 9]]