[Python] NumPy 배열 값 삽입/수정/삭제/복사
- 파이썬(Python)
- 2022. 2. 18. 18:47
참조
배열 값 삽입
- insert() : 배열의 특정 위치에 값 삽입
- axix를 지정하지 않으면 1차원 배열로 변환
- 추가할 방향을 axis로 지정
- 원본 배열 변경없이 새로운 배열 반환
import numpy as np
# 1차원
a1 = np.array([1,2,3,4,5])
# 2차원
a2 = np.array([[1,2,3], [4,5,6], [7,8,9]])
# 3차원
a3 = np.array([ [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ],
[ [1, 2, 3], [4, 5, 6], [7, 8, 9] ],
[ [1, 2, 3], [4, 5, 6], [7, 8, 9] ] ])
print(a1)
b1 = np.insert(a1, 0, 10)
print(b1)
print(a1)
c1 = np.insert(a1, 2, 10)
print(c1)
print(a2)
b2 = np.insert(a2, 1, 10, axis=0) # 2차원이라 축을 지정
print(b2)
c2 = np.insert(a2, 1, 10, axis=1) # axis가 1이면 column, axis가 0이면 row
print(c2)
[1 2 3 4 5]
[10 1 2 3 4 5]
[1 2 3 4 5]
[ 1 2 10 3 4 5]
[[1 2 3]
[4 5 6]
[7 8 9]]
[[ 1 2 3]
[10 10 10]
[ 4 5 6]
[ 7 8 9]]
[[ 1 10 2 3]
[ 4 10 5 6]
[ 7 10 8 9]]
배열 값 수정
- 배열의 인덱싱으로 접근하여 값 수정
import numpy as np
# 1차원
a1 = np.array([1,2,3,4,5])
# 2차원
a2 = np.array([[1,2,3], [4,5,6], [7,8,9]])
# 3차원
a3 = np.array([ [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ],
[ [1, 2, 3], [4, 5, 6], [7, 8, 9] ],
[ [1, 2, 3], [4, 5, 6], [7, 8, 9] ] ])
print(a1)
a1[0] = 1
a1[1] = 2
a1[2] = 3
print(a1)
a1[:1] = 9
print(a1)
index = np.array([1, 3, 4])
a1[index] = 0
print(a1)
a1[index] += 4
print(a1)
print(a2)
a2[0, 0] = 1
a2[1, 1] = 2
a2[2, 2] = 3
a2[0] = 1 # 전체 해당하는 로우가 선택
print(a2)
a2[1:, 2] = 0
print(a2)
row = np.array([0, 1])
col = np.array([1, 2])
a2[row, col] = 0
print(a2)
[1 2 3 4 5]
[1 2 3 4 5]
[9 2 3 4 5]
[9 0 3 0 0]
[9 4 3 4 4]
[[1 2 3]
[4 5 6]
[7 8 9]]
[[1 1 1]
[4 2 6]
[7 8 3]]
[[1 1 1]
[4 2 0]
[7 8 0]]
[[1 0 1]
[4 2 0]
[7 8 0]]
배열 값 삭제
- delete() : 배열의 특정 위치에 값 삭제
- axis를 지정하지 않으면 1차원 배열로 변환
- 삭제할 방향을 axis로 지정
- 원본 배열 변경없이 새로운 배열 반환
import numpy as np
# 1차원
a1 = np.array([1,2,3,4,5])
# 2차원
a2 = np.array([[1,2,3], [4,5,6], [7,8,9]])
# 3차원
a3 = np.array([ [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ],
[ [1, 2, 3], [4, 5, 6], [7, 8, 9] ],
[ [1, 2, 3], [4, 5, 6], [7, 8, 9] ] ])
print(a1)
b1 = np.delete(a1, 1)
print(b1)
print(a1)
print(a2)
b2 = np.delete(a2, 1, axis=0) # axis가 0이면 row
print(b2)
c2 = np.delete(a2, 1, axis=1) # axis가 1이면 col
print(b2)
[1 2 3 4 5]
[1 3 4 5]
[1 2 3 4 5]
[[1 2 3]
[4 5 6]
[7 8 9]]
[[1 2 3]
[7 8 9]]
배열 복사
- 리스트 자료형과 달리 배열의 슬라이스는 복사본이 아님
- 슬라이싱 한 상태로, 배열의 내용을 변경하게 되면 원본 배열의 데이터도 변경
import numpy as np
# 1차원
a1 = np.array([1,2,3,4,5])
# 2차원
a2 = np.array([[1,2,3], [4,5,6], [7,8,9]])
# 3차원
a3 = np.array([ [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ],
[ [1, 2, 3], [4, 5, 6], [7, 8, 9] ],
[ [1, 2, 3], [4, 5, 6], [7, 8, 9] ] ])
print(a2)
print(a2[:2, :2])
a2_sub = a2[:2, :2]
print(a2_sub)
a2_sub[:, 1] = 0
print(a2_sub)
print(a2)
[[1 2 3]
[4 5 6]
[7 8 9]]
[[1 2]
[4 5]]
[[1 2]
[4 5]]
[[1 0]
[4 0]]
[[1 0 3]
[4 0 6]
[7 8 9]]
- copy() : 배열이나 하위 배열 내의 값을 명시적으로 복사
import numpy as np
# 1차원
a1 = np.array([1,2,3,4,5])
# 2차원
a2 = np.array([[1,2,3], [4,5,6], [7,8,9]])
# 3차원
a3 = np.array([ [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ],
[ [1, 2, 3], [4, 5, 6], [7, 8, 9] ],
[ [1, 2, 3], [4, 5, 6], [7, 8, 9] ] ])
print(a2)
a2_sub_copy = a2[:2, :2].copy()
print(a2_sub_copy)
a2_sub_copy[:, 1] = 1
print(a2_sub_copy)
print(a2)
[[1 2 3]
[4 5 6]
[7 8 9]]
[[1 2]
[4 5]]
[[1 1]
[4 1]]
[[1 2 3]
[4 5 6]
[7 8 9]]
728x90
'파이썬(Python)' 카테고리의 다른 글
[Python] NumPy 배열 연산 (0) | 2022.02.18 |
---|---|
[Python] NumPy 배열 변환 (0) | 2022.02.18 |
[Python] NumPy 배열 조회 (0) | 2022.02.18 |
[Python] NumPy 배열 생성 (0) | 2022.02.18 |
[Python] 라이브러리 (0) | 2022.02.09 |
이 글을 공유하기