HOWTO · NumPy
NumPy에서 행렬에 행 추가
이 튜토리얼은 numpy에서 행렬에 행을 추가하는 방법을 보여줍니다.
이 페이지의 내용
NumPy에서 행렬은 2차원 배열을 의미합니다. 행을 추가하려면 모든 열에 해당하는 값을 제공하고, 축 0을 따라 기존 배열과 결합해야 합니다. 간단히 세로로 쌓으려면 numpy.vstack()을 사용하고, 배열 결합 방식이 코드에 더 잘 맞는 경우에는 numpy.append() 또는 numpy.concatenate()를 사용하세요. 이 연산들은 새 배열을 반환하므로 결과를 유지하려면 변수에 할당해야 합니다.
예제에서는 열이 세 개인 행렬에 [7, 8, 9]를 추가합니다. 각 예제는 결과 배열을 출력하므로 추가된 행을 확인할 수 있습니다.
numpy.vstack()로 행 추가하기
numpy.vstack()은 배열을 세로로 쌓습니다. 새 행은 1차원 배열로 전달하며, 이 함수는 새 행이 맨 아래에 추가된 새 배열을 반환합니다.
다음 예제를 실행해 보세요:
import numpy as np
matrix = np.array([[1, 2, 3],
[4, 5, 6]])
new_row = np.array([7, 8, 9])
result = np.vstack((matrix, new_row))
print(result)
기존 matrix는 바뀌지 않고, result에 행이 추가된 배열이 들어 있습니다. 새 행의 값은 행렬의 열 개수에 맞춰 세 개여야 합니다. 여러 행을 추가하려면 행들을 담은 2차원 배열을 numpy.vstack()에 전달하세요.
numpy.append()로 행 추가하기
numpy.append()에서 행 방향으로 추가하려면 axis=0으로 설정하세요. 이 예제의 새 행은 행렬과 차원 수가 같고 열이 세 개인 (1, 3) 모양의 2차원 배열입니다.
import numpy as np
matrix = np.array([[1, 2, 3],
[4, 5, 6]])
new_row = np.array([[7, 8, 9]])
result = np.append(matrix, new_row, axis=0)
print(result)
numpy.append()는 matrix를 직접 수정하지 않고 새 배열을 반환합니다. 추가된 배열을 사용하려면 위 예제처럼 반환값을 변수에 할당하세요. axis=0을 지정하면 두 배열의 열 개수가 같아야 합니다. 모양이 호환되는 2차원 배열을 전달하면 여러 행도 추가할 수 있습니다. 큰 배열에 행을 반복해서 추가할 때마다 결과 배열이 새로 만들어지므로, 행을 모아 한 번에 결합하는 방법을 고려하세요.
numpy.concatenate()와 numpy.r_로 행 결합하기
numpy.concatenate()는 기존 축을 따라 배열을 결합합니다. 행을 추가하려면 axis=0을 사용하고, 입력 배열의 열 개수가 모두 같은지 확인하세요. 여러 배열을 결합할 수도 있는 범용 배열 결합 연산입니다.
import numpy as np
matrix = np.array([[1, 2, 3],
[4, 5, 6]])
new_row = np.array([[7, 8, 9]])
result = np.concatenate((matrix, new_row), axis=0)
print(result)
numpy.r_는 함수 호출이 아니라 특수한 인덱싱 객체입니다. 이 경우 행을 간결하게 결합하는 방법을 제공합니다:
import numpy as np
matrix = np.array([[1, 2, 3],
[4, 5, 6]])
new_row = np.array([[7, 8, 9]])
result = np.r_[matrix, new_row]
print(result)
세로로 쌓는다는 의도가 가장 분명할 때는 numpy.vstack()을 선택하고, 축을 명시하거나 여러 배열의 시퀀스를 결합하려면 numpy.concatenate()를 선택하세요. 간단한 결합에는 numpy.r_를 짧은 대안으로 사용할 수 있습니다.
numpy.insert()로 특정 위치에 행 삽입하기
새 행을 기존 행 사이에 넣으려면 numpy.insert()를 사용하세요. obj 인수로 삽입 위치를 지정합니다. 인덱스 1을 지정하면 현재 두 번째 행 앞에 새 행이 들어갑니다. 행 방향으로 삽입하려면 axis=0으로 설정하세요.
import numpy as np
matrix = np.array([[1, 2, 3],
[4, 5, 6]])
new_row = [7, 8, 9]
result = np.insert(matrix, 1, new_row, axis=0)
print(result)
마지막 행 뒤에 삽입하려면 현재 행 개수를 위치로 사용하세요. 2차원 배열에서 .shape는 속성이며, 첫 번째 값이 행 개수입니다:
import numpy as np
matrix = np.array([[1, 2, 3],
[4, 5, 6]])
new_row = [7, 8, 9]
position = matrix.shape[0]
result = np.insert(matrix, position, new_row, axis=0)
print(result)
다른 메서드와 마찬가지로 numpy.insert()도 새 배열을 반환합니다. 결과를 보관하거나 matrix에 다시 할당하세요. 원래 배열은 수정되지 않습니다. 네 가지 방법 모두 추가할 행의 열 개수가 기존 행과 같아야 합니다.