ar = np.arange(24).reshape(2,3,4)
-> [[[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]],
[[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]]]
* ar[0][1][2] = ar[0,1,2]
# ar 첫번째 배열 2행 3열의 값. 콤마 콤마로 나열 가능
-> 6
* 슬라이스 ar[0][:2,:3] = ar[0,:2,:3]
# ar 첫번째 배열 첫 번째 행부터 2번째 행까지, 첫 번째 열부터 3번째 행까지
-> array([[0, 1, 2],
[4, 5, 6]])
# 비교 연산자를 이용해서 데이터 추출. 7보다 큰 수만 출력해보자
* ar > 7 # 비교연산자를 이용해 7보다 큰 값은 True, 작은값은 False로 출력
-> array([[[False, False, False, False],
[False, False, False, False],
[ True, True, True, True]],
[[ True, True, True, True],
[ True, True, True, True],
[ True, True, True, True]]])
* ar[ar > 7] # ar이 가진 값 중 7보다 큰 값을 출력(1차원)
-> array([ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23])
# 5보다 크고 10보다 작은 값들을 출력해보자
ar[(ar > 5) & (ar < 10)]
-> array([6, 7, 8, 9])
a = np.arange(3)
-> [0 1 2]
* np.append(a, 3)
-> [0 1 2 3]
* np.append(a, [3,4,5])
-> [0 1 2 3 4 5]
* np.append(a, np.arange(3,6))
-> [0 1 2 3 4 5]
* np.append([3,4,5], a) # [3,4,5]에다가 a를 추가
-> [3 4 5 0 1 2]
* np.append(np.arange(3,6), a)
-> [3 4 5 0 1 2]
a = np.arange(3)
-> [0 1 2]
* np.insert(a, 2, 100) # 인덱스 2 위치에 100을 추가
-> [ 0 1 100 2]
* np.insert(a, 2, [100,101,102])
-> [ 0 1 100 101 102 2]
a_2d = np.arange(6).reshape(2,3)
-> [[0 1 2]
[3 4 5]]
* np.append(a_2d,10)
-> [ 0 1 2 3 4 5 10] # 1차원으로 변경됨
# a_2d_res = np.arange(6).reshape(2,3) * 5
* np.append(a_2d, a_2d_res, axis=0) # axis=0 행으로 값 추가
-> [[ 0 1 2]
[ 3 4 5]
[ 0 5 10]
[15 20 25]]
* np.append(a_2d, a_2d_res, axis=1) # 열로 값 추가
-> [[ 0 1 2 0 5 10]
[ 3 4 5 15 20 25]]
a_2d = np.arange(6).reshape(2,3)
-> [[0 1 2]
[3 4 5]]
* np.insert(a_2d, 1, 100, axis=0)
# 인덱스 행이 1인 위치에 100으로 채워진 배열 추가
-> [[ 0, 1, 2],
[100, 100, 100],
[ 3, 4, 5]]
* np.insert(a_2d, 1, 100, axis=1)
# 인덱스 열이 1인 위치에 100으로 채워진 배열 추가
-> [[ 0, 100, 1, 2],
[ 3, 100, 4, 5]]
* np.append(a_2d, a_2d_res, axis=1) # 열로 값 추가
-> [[ 0 1 2 0 5 10]
[ 3 4 5 15 20 25]]
# data = np.arange(100,103)
* np.insert(a_2d, 1, data, axis = 0)
-> [[ 0, 1, 2],
[100, 101, 102],
[ 3, 4, 5]]
a_2d = np.arange(6).reshape(2,3)
-> [[0 1 2]
[3 4 5]]
# data = np.arange(100,103)
* np.vstack((a_2d, data))
-> [[ 0, 1, 2],
[ 3, 4, 5],
[100, 101, 102]]
a_2d = np.arange(6).reshape(2,3)
-> [[0 1 2]
[3 4 5]]
# data = np.arange(4).reshape(2,2)
* np.vstack((a_2d, data))
-> [[0, 1, 2, 0, 1],
[3, 4, 5, 2, 3]]
a_2d = np.arange(12).reshape(3,4)
-> [[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
* np.delete(a_2d,1) # 1번 인덱스 원소만 삭제(1차원으로 변경)
-> [ 0 2 3 4 5 6 7 8 9 10 11]
* np.delete(a_2d,(0,1,3) # 0번, 1번, 3번 인덱스 원소 여러개 삭제 가능(1차원으로 변경)
-> [ 2 4 5 6 7 8 9 10 11]
* np.delete(a_2d, 0, axis=0) # 행 삭제
-> [[ 4 5 6 7]
[ 8 9 10 11]]
* np.delete(a_2d, 0, axis=1) # 열 삭제
-> [[ 1 2 3]
[ 5 6 7]
[ 9 10 11]]
두 배열끼리의 병합
a = np.ones((2,3), int)
-> [[1, 1, 1]
[1, 1, 1]]
b = np.full((2,3), 2)
-> [[2, 2, 2]
[2, 2, 2]]
* np.concatenate([a, b], axis=0) # 행 병합
-> [[1, 1, 1],
[1, 1, 1],
[2, 2, 2],
[2, 2, 2]]
* np.concatenate([a, b], axis=1) # 열 병합
-> [[1, 1, 1, 2, 2, 2],
[1, 1, 1, 2, 2, 2]]
* np.stack([a, b], axis=0)
# 배열을 같은 차원으로 병합하지 않고 차원을 늘려 병합
-> [[[1, 1, 1],
[1, 1, 1]],
[[2, 2, 2],
[2, 2, 2]]] # 3차원
* np.stack([a, b], axis=-1)
# zip과 같은 방식으로 같은 원소에 해당하는 원소끼리 묶어 병합
# 배열을 같은 차원으로 병합하지 않고 차원을 늘려 병합
-> [[[1, 2],
[1, 2],
[1, 2]],
[[1, 2],
[1, 2],
[1, 2]]]
* np.block([a, b]) # 열 병합
-> [[1, 1, 1, 2, 2, 2],
[1, 1, 1, 2, 2, 2]]
* np.hstack([a, b]) # 열 병합
-> [[1, 1, 1, 2, 2, 2],
[1, 1, 1, 2, 2, 2]]
* np.vstack([a, b]) # 행 병합
-> [[1, 1, 1],
[1, 1, 1],
[2, 2, 2],
[2, 2, 2]]
* np.dstack([a, b])
# zip과 같은 방식으로 같은 원소에 해당하는 원소끼리 묶어 병합
# 배열을 같은 차원으로 병합하지 않고 차원을 늘려 병합
# np.stack([a, b], axis=-1)와 같음
-> [[[1, 2],
[1, 2],
[1, 2]],
[[1, 2],
[1, 2],
[1, 2]]]
배열을 여러개의 배열로 분할
res = np.arange(16).reshape(4,4)
-> [[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]]
* np.split(res, 2, axis=0)
-> [array([[0, 1, 2, 3],
[4, 5, 6, 7]]),
array([[ 8, 9, 10, 11],
[12, 13, 14, 15]])]
* np.split(res, 2, axis=1)
-> [array([[ 0, 1],
[ 4, 5],
[ 8, 9],
[12, 13]]),
array([[ 2, 3],
[ 6, 7],
[10, 11],
[14, 15]])]
* np.split(res,2)[0]
-> [[0, 1, 2, 3],
[4, 5, 6, 7]]
* np.array_split(res, 3, axis=0)
-> [array([[0, 1, 2, 3],
[4, 5, 6, 7]]),
array([[ 8, 9, 10, 11]]),
array([[12, 13, 14, 15]])]
* np.array_split(res, 3, axis=1)
-> [array([[ 0, 1],
[ 4, 5],
[ 8, 9],
[12, 13]]),
array([[ 2],
[ 6],
[10],
[14]]),
array([[ 3],
[ 7],
[11],
[15]])]
* vsplit(배열, 분할수)
np.vsplit(res, 2)
-> [array([[0, 1, 2, 3],
[4, 5, 6, 7]]),
array([[ 8, 9, 10, 11],
[12, 13, 14, 15]])]
* np.hsplit(배열, 분할수)
-> [array([[ 0, 1],
[ 4, 5],
[ 8, 9],
[12, 13]]),
array([[ 2, 3],
[ 6, 7],
[10, 11],
[14, 15]])]
a_3d = np.arange(24).reshape(2,3,4)
-> [[[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]],
[[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]]]
* np.dsplit(a_3d, 2)
-> [array([[[ 0, 1],
[ 4, 5],
[ 8, 9]],
[[12, 13],
[16, 17],
[20, 21]]]),
array([[[ 2, 3],
[ 6, 7],
[10, 11]],
[[14, 15],
[18, 19],
[22, 23]]])]