[Python] NumPy 배열 값 삽입/수정/삭제/복사

참조


배열 값 삽입

  • 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

이 글을 공유하기

댓글

Designed by JB FACTORY