본문 바로가기

백엔드개발자 준비하기 - 파이썬

[파이썬] numpy ndarrary2d(2차원)

예시1

import numpy as np

a1 = np.array([[1, 2, 3], [10, 20, 30]])
print(a1)
print(a1.ndim)
print(a1.shape)
print(a1.size)

결과

[[ 1  2  3]
 [10 20 30]]
2
(2, 3)
6

 

예시2

a2 = np.arange(20).reshape(4, 5) # 기본 1차원 배열을(n, )다차원 배열로(m, l)로 변경
print(a2)
print(a2.shape)

결과

[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]
 [15 16 17 18 19]]
(4, 5)

 

예시3

a3 = a2.flatten() 
a3[3] = 100
print(a3)
print(a2)

a4 = a2.ravel()  
a4[3] = 200
print(a4)
print(a2)

결과

[  0   1   2 100   4   5   6   7   8   9  10  11  12  13  14  15  16  17
  18  19]
[[  0   1   2 200   4]
 [  5   6   7   8   9]
 [ 10  11  12  13  14]
 [ 15  16  17  18  19]]
[  0   1   2 200   4   5   6   7   8   9  10  11  12  13  14  15  16  17
  18  19]
[[  0   1   2 200   4]
 [  5   6   7   8   9]
 [ 10  11  12  13  14]
 [ 15  16  17  18  19]]

 

예시4

a2 = np.arange(20).reshape(4, 5)
print(a2)
#print(a2[1])
#print(a2[1, 2])
#print(a2[:, 1])
#print(a2[:, 1:4])
#print(a2[:, 1:4:2])
print(a2[1:3, :])
print(a2[::2, 1:4])

결과

[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]
 [15 16 17 18 19]]
[[ 5  6  7  8  9]
 [10 11 12 13 14]]
[[ 1  2  3]
 [11 12 13]]

 

예시5

print(a2)
print(a2.shape)
print(a2.sum())
print(a2.sum(axis = 0)) # 0 : 열별로 1 : 행별로
print(a2.sum(axis = 1))

결과

[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]
 [15 16 17 18 19]]
(4, 5)
190
[30 34 38 42 46]
[10 35 60 85]

 

예시6

print(a2, a2.shape)
a3 = a2.T
print(a3, a3.shape)

결과

[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]
 [15 16 17 18 19]] (4, 5)
[[ 0  5 10 15]
 [ 1  6 11 16]
 [ 2  7 12 17]
 [ 3  8 13 18]
 [ 4  9 14 19]] (5, 4)

 

예시7

print(a2, a2.shape)
a3 = np.moveaxis(a2, [0], [1])
print(a3, a3.shape)

결과

[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]
 [15 16 17 18 19]] (4, 5)
[[ 0  5 10 15]
 [ 1  6 11 16]
 [ 2  7 12 17]
 [ 3  8 13 18]
 [ 4  9 14 19]] (5, 4)

 

예시8

# shape (3, 5) 의 2차원 ndarray로 만들기
a10 = np.arange(5, 20).reshape(3, 5)
print(a10, a10.shape)

a11 = a10[:, 2:4]
print(a11, a11.shape)
print(a11.sum(axis = 0))
print(np.mean(a11, axis = 0))

결과

[[ 5  6  7  8  9]
 [10 11 12 13 14]
 [15 16 17 18 19]] (3, 5)
[[ 7  8]
 [12 13]
 [17 18]] (3, 2)
[36 39]
[12. 13.]

 

예시9

a1 = np.arange(0, 10).reshape(2, 5)
a2 = np.arange(100, 110).reshape(2, 5)
print(a1)
print(a2)

a3 = np.concatenate((a1, a2), axis = 1)
print(a3)
a4 = np.hstack((a1, a2))
print(a4)
a5 = np.vstack((a1, a2))
print(a5)

결과

[[0 1 2 3 4]
 [5 6 7 8 9]]
[[100 101 102 103 104]
 [105 106 107 108 109]]
[[  0   1   2   3   4 100 101 102 103 104]
 [  5   6   7   8   9 105 106 107 108 109]]
[[  0   1   2   3   4 100 101 102 103 104]
 [  5   6   7   8   9 105 106 107 108 109]]
[[  0   1   2   3   4]
 [  5   6   7   8   9]
 [100 101 102 103 104]
 [105 106 107 108 109]]

 

예시10

print(a4)
a6 = np.hsplit(a4, 5)
print(a6)

결과

[[  0   1   2   3   4 100 101 102 103 104]
 [  5   6   7   8   9 105 106 107 108 109]]
[array([[0, 1],
       [5, 6]]), array([[2, 3],
       [7, 8]]), array([[  4, 100],
       [  9, 105]]), array([[101, 102],
       [106, 107]]), array([[103, 104],
       [108, 109]])]

 

예시11

a7 = a4.T
print(a7)
np.vsplit(a7, 5)

결과

[[  0   5]
 [  1   6]
 [  2   7]
 [  3   8]
 [  4   9]
 [100 105]
 [101 106]
 [102 107]
 [103 108]
 [104 109]]
Out[74]:
[array([[0, 5],
        [1, 6]]),
 array([[2, 7],
        [3, 8]]),
 array([[  4,   9],
        [100, 105]]),
 array([[101, 106],
        [102, 107]]),
 array([[103, 108],
        [104, 109]])]

 

예시12

a2 = np.arange(20).reshape(4, 5)
print(a2)
filter1 = (a2[:, 0] % 10 == 5) # 필터
print(a2[filter1])

결과

[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]
 [15 16 17 18 19]]
[[ 5  6  7  8  9]
 [15 16 17 18 19]]

'백엔드개발자 준비하기 - 파이썬' 카테고리의 다른 글

[파이썬] numpy ndarrary2d(2차원)  (0) 2023.02.13
[파이썬] numpy ndarray  (0) 2023.02.13
[파이썬] numpy  (0) 2023.02.13
[파이썬] random  (0) 2023.02.13
[파이썬] requests  (0) 2023.02.13