python에서 배열을 삽입하는 여러 방법

swooeun·2023년 5월 29일
0

프로그래밍에서 가장 중요한 자료형인 배열을 파이썬에서 사용하는 방법은 대표적으로 두가지가 있다.

기본 자료형인 List 와 numpy 라이브러리를 사용하는 것.

정말 다룰 일이 잦은데 쓸 때 마다 구글링을 했다.
매번 구글링하기 귀찮아서 정리해보도록 하겠음.

list 를 다루는 경우

기본 자료형인 list 를 다룰 때에는 append 함수를 활용하여 쉽게 할 수 있다.

# 1-dim
a = [1, 2, 3, 4]
a.append(5)
print(a)
# result
# [1, 2, 3, 4, 5]

# 2-dim
b = [[1, 2], [3, 4], [5, 6]]
b.append([7, 8])
print(b)
# result
# [[1, 2], [3, 4], [5, 6], [7, 8]]

빈 배열을 선언해놓고 삽입하는 경우도 똑같음.

# 2-dim
b = []
b.append([1, 2])
b.append([3, 4])
b.append([5, 6])
print(b)
# result
# [[1, 2], [3, 4], [5, 6]]

list 의 경우, 배열 차원이 맞지않아도 append 가 된다.

# insert 1-dim into 2-dim 
b = [[1, 2], [3, 4], [5, 6]]
b.append(7)
print(b)
# result
# [[1, 2], [3, 4], [5, 6], 7]

끗.

numpy 를 다루는 경우

엄청 많은 데이터와 다차원 배열을 다루다보면 numpy 를 쓰게되는 것이 거의 필수적인데, 효율적인 연산속도 때문인지 list와 다르게 차원이 무조건 같아야한다.
아님 말고.

발그림 죄송
아무튼 numpy에서 axis는 0 1 2 순서대로 세로 가로 깊이를 의미

1. np.concatenate

순차 (Concatenation)
형식 언어 이론과 컴퓨터 프로그래밍에서 문자열 연결은 문자열의 끝과 끝을 결합시키는 조작이다. 이를테면 "눈"과 "사람"의 문자열을 연결하면 "눈사람"으로 된다. 위키백과

그냥 궁금해서 쳐봄

import numpy as np

a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])

print(np.concatenate((a, b), axis=0))
'''result
[[1 2]
 [3 4]
 [5 6]
 [7 8]]
 ''' 
print(np.concatenate((a, b.T), axis=1))
'''result
[[1 2 5 7]
 [3 4 6 8]]
 '''
print(np.concatenate((a, b), axis=None))
''' result
[1 2 3 4 5 6 7 8]
'''

2. np.vtsack / np.hstack

import numpy as np

a = np.array([[1, 2]])
b = np.array([[3, 4]])

print(np.vstack((a, b)))
'''result
[[1 2]
 [3 4]]
'''
print(np.hstack((a, b)))
'''result
[[1 2 3 4]]
'''

vstack 은 세로로 결합해주고 hstack 은 가로로 결합된다.

3. np.append

import numpy as np

a = np.array([[1, 2]])
b = np.array([[3, 4]])

print(np.append(a, b, axis=0))
'''result
[[1 2]
 [3 4]]
'''
print(np.append(a, b, axis=1))
'''result
[[1 2 3 4]]
'''

4. 빈 배열을 만들고 데이터를 채워야하는 경우

배열 안의 데이터를 생성 해놓고 삽입을 해야하는 경우도 있지만,
빈 배열을 선언해놓고 거기에다가 필터링 된 데이터를 삽입해야하는 경우가 더 많았다.
그래서 두 가지 방법을 찾아봤다.

(1) 더미 값이 채워진 배열에 넣기

import numpy as np

a = np.array([[999, 999]]) # dummy

a = np.concatenate((a, np.array([[1, 2]])), axis=0)
a = np.append(a, np.array([[3, 4]]), axis=0)
a = np.vstack((a, np.array([[5, 6]])))
print(a)
'''result
[[999 999]
 [  1   2]
 [  3   4]
 [  5   6]]
'''
a = np.delete(a, 0, axis=0) # del dummy val
print(a)
'''result
[[  1   2]
 [  3   4]
 [  5   6]]
'''

이렇게 더미 값을 추가해주고 나중에 삭제하는 방법이 있다.

(2) np.empty 를 활용하여 빈 배열 만들고 삽입

import numpy as np

a = np.empty((0, 2))

a = np.concatenate((a, np.array([[1, 2]])), axis=0)
a = np.append(a, np.array([[3, 4]]), axis=0)
a = np.vstack((a, np.array([[5, 6]])))
print(a)
'''result
[[  1   2]
 [  3   4]
 [  5   6]]
'''

위에 작성된 내용은 미흡한 부분이 많을 수 있습니다.

profile
Don’t be afraid, keep going

0개의 댓글