반응형
질문
나는 빈 배열을 만들고 항목을 하나씩 추가하고 싶습니다.
xs = []
for item in data:
xs.append(item)
NumPy 배열에서 이 리스트 스타일 표기법을 사용할 수 있을까요?
답변
NumPy를 효율적으로 사용하기 위한 잘못된 메타 모델입니다. NumPy 배열은 연속적인 메모리 블록에 저장됩니다. 기존 배열에 행 또는 열을 추가하려면 전체 배열을 새로운 메모리 블록으로 복사해야 하며, 새로운 요소를 저장하기 위해 간격이 생깁니다. 이는 반복적으로 수행되면 매우 비효율적입니다.
행을 추가하는 대신에 적절한 크기의 배열을 할당하고, 행별로 할당하세요:
>>> import numpy as np
>>> a = np.zeros(shape=(3, 2))
>>> a
array([[ 0., 0.],
[ 0., 0.],
[ 0., 0.]])
>>> a[0] = [1, 2]
>>> a[1] = [3, 4]
>>> a[2] = [5, 6]
>>> a
array([[ 1., 2.],
[ 3., 4.],
[ 5., 6.]])
반응형
댓글