본문 바로가기
파이썬

파이썬 numpy 배열 행 주 및 열 주

by º기록 2020. 12. 29.
반응형

numpy 가 데이터를 저장하는 방법을 이해하는 데 문제가 있습니다. 다음을 고려하세요:

>>> import numpy as np
>>> a = np.ndarray(shape=(2,3), order='F')
>>> for i in xrange(6): a.itemset(i, i+1)
... 
>>> a
array([[ 1.,  2.,  3.],
       [ 4.,  5.,  6.]])
>>> a.flags
  C_CONTIGUOUS : False
  F_CONTIGUOUS : True
  OWNDATA : True
  WRITEABLE : True
  ALIGNED : True
  UPDATEIFCOPY : False

이는 a 가 주 열 ( F_CONTIGUOUS )이므로 내부적으로 a 는 다음과 같아야합니다.

[1, 4, 2, 5, 3, 6]


>>> for i in xrange(6): print a.item(i)
... 
1.0
2.0
3.0
4.0
5.0
6.0


질문은 다음과 같습니다. 숫자 목록 (예 : 1, 2, 3, 4, 5, 6 )이있는 경우 numpy 모양의 배열 (2, 3) 열 주요 순서? 이것이 내가 다음과 같은 행렬을 얻는 방법입니다.

array([[ 1.,  3.,  5.],
       [ 2.,  4.,  6.]])

목록을 선형 적으로 반복하여 새로 생성 된 ndarray 에 배치하고 싶습니다. 그 이유는 열 주요 순서로 설정된 다차원 배열의 파일을 읽을 것이기 때문입니다.

 

해결 방법

 

numpy는 행 주요 순서로 데이터를 저장합니다.

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

모양을 변경해도 데이터 순서는 변경되지 않습니다.

'F'를 추가하면 원하는 것을 얻을 수 있습니다.

>>> b
array([1, 2, 3, 4, 5, 6])
>>> c = b.reshape(2,3,order='F')
>>> c
array([[1, 3, 5],
       [2, 4, 6]])

 

참조 페이지 https://stackoverflow.com/questions/20341614

 

 

반응형

댓글