[파이썬] 넘파이 배열의 내부 구조, 뷰(view), order

InAnarchy·2023년 4월 20일
0

numpy

목록 보기
3/4
post-thumbnail

python List VS numpy array

리스트

  • 가변적인 크기
  • 객체의 참조를 저장하는 배열로 구성
  • 리스트의 각 원소는 서로 다른 데이터 타입을 가질 수 있음
  • 메모리는 공간이 필요하거나 확보되면 동적으로 재할당-> 메모리 사용량이 높아지고 메모리 접근이 느려질 수 있음

넘파이 배열

  • 고정된 크기
  • 동일한 데이터 타입의 원소를 갖는 연속적인 메모리 블록에 저장-> 메모리 사용량이 최소화
  • 배열의 크기를 변경하려면 새로운 메모리 블록에 배열을 복사

뷰(view)

  • ndarray를 슬라이싱, 인덱싱 등을 할 때 원본 데이터를 복사하지 않고, 뷰를 통해 참조된다.
pylist = [1,2,3,4,5]

part_pylist = pylist[2:] #3,4,5
part_pylist[0] = 0

print(pylist) 
print(part_pylist)
[1, 2, 3, 4, 5]
[0, 4, 5]

파이썬 리스트는 리스트의 조각들을 변경해도 원본 리스트에 변화가 없다.

nparray = np.array([1,2,3,4,5])

part_nparray = nparray[2:]
part_nparray[0] = 0

print(nparray) 
print(part_nparray)
[1 2 0 4 5]
[0 4 5]

그런데 넘파이 배열은 배열 조각을 변경하면 원본 배열에도 변화가 생긴다. 이 배열 조각을 원본 배열의 뷰(view) 라고 부른다.

order

numpy의 order 매개변수

크게 두가지

  • C: 행 우선 배치 -> 행이 먼저 채워지고 다음 행으로 이동(기본값)
  • F: 열 우선 배치 -> 열이 먼저 채워지고 다음 열로 이동

REFERENCE
공식 문서에 매우 자세한 설명이 있으니 참고하면 좋을 것 같다.

profile
keep going.

0개의 댓글