배열의 모양에 관련된 attribute 들
먼저, 전치행렬을 구해주는 T attribute가 있다.
-------------------------------------------------------------------------
>>> x = np.array([[1.,2.],[3.,4.]])
>>> x
array([[ 1., 2.],
[ 3., 4.]])
array([[ 1., 2.],
[ 3., 4.]])
>>> x.T
array([[ 1., 3.],
[ 2., 4.]])
array([[ 1., 3.],
[ 2., 4.]])
>>> x = np.array([1.,2.,3.,4.])
>>> x
array([ 1., 2., 3., 4.])
>>> x
array([ 1., 2., 3., 4.])
>>> x.T # 1차원 배열에서 T attribute 는 동작하지 않는다.
array([ 1., 2., 3., 4.])
-------------------------------------------------------------------------
위에서도 언급되었지만 1차 배열에서는 이것이 동작되지 않는다는 것을 주의해야 한다. 만약 배열 A의 복소전치행렬을 구하고 싶다면 A.conj().T (혹은 A.T.conj() ) 라고 하면 된다. 그리고 M이 행렬객체라면 단순히 M.H 라고 하면된다.
배열의 크기에 관련된 attribute 들
배열의 크기에 관련된 attribute로 ndim, shape, 그리고 size가 있다. 이 중 shape는 읽기뿐만 아니라 쓰기도 가능하다.
ndim 은 배열이 몇 차 배열인지를 알려준다.
-------------------------------------------------------------------------
>>> x = np.array([1, 2, 3])
>>> x.ndim
1
>>> y = np.zeros((2, 3, 4))
>>> y.ndim
3
-------------------------------------------------------------------------
shape는 배열의 각 차수별 크기를 튜플로 반환하거나 지정해 줄 수 있다. 단, shape를 변경할 때는 변경 전과 전체 요소의 숫자가 같아야 한다.
-------------------------------------------------------------------------
array([ 1., 2., 3., 4.])
-------------------------------------------------------------------------
위에서도 언급되었지만 1차 배열에서는 이것이 동작되지 않는다는 것을 주의해야 한다. 만약 배열 A의 복소전치행렬을 구하고 싶다면 A.conj().T (혹은 A.T.conj() ) 라고 하면 된다. 그리고 M이 행렬객체라면 단순히 M.H 라고 하면된다.
배열의 크기에 관련된 attribute 들
배열의 크기에 관련된 attribute로 ndim, shape, 그리고 size가 있다. 이 중 shape는 읽기뿐만 아니라 쓰기도 가능하다.
ndim 은 배열이 몇 차 배열인지를 알려준다.
-------------------------------------------------------------------------
>>> x = np.array([1, 2, 3])
>>> x.ndim
1
>>> y = np.zeros((2, 3, 4))
>>> y.ndim
3
-------------------------------------------------------------------------
shape는 배열의 각 차수별 크기를 튜플로 반환하거나 지정해 줄 수 있다. 단, shape를 변경할 때는 변경 전과 전체 요소의 숫자가 같아야 한다.
-------------------------------------------------------------------------
>>> x = np.array([1, 2, 3, 4])
>>> x.shape
(4,)
>>> y = np.zeros((2, 3, 4))
>>> y.shape
(2, 3, 4)
>>> y.shape = (3, 8)
>>> y
array([[ 0., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 0.]])
>>> y.shape = (3, 6)
Traceback (most recent call last): File "<stdin>", line 1, in <module>
ValueError: total size of new array must be unchanged
-------------------------------------------------------------------------
size는 전체 요소들의 개수를 반환하며 np.prod(obj.shape)와 같은 결과를 생성한다.
-------------------------------------------------------------------------
>>> x = np.zeros((3, 5, 2), dtype=np.complex128)
>>> x.size
30
>>> np.prod(x.shape)
30
-------------------------------------------------------------------------
기타
>>> x.shape
(4,)
>>> y = np.zeros((2, 3, 4))
>>> y.shape
(2, 3, 4)
>>> y.shape = (3, 8)
>>> y
array([[ 0., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 0.]])
>>> y.shape = (3, 6)
Traceback (most recent call last): File "<stdin>", line 1, in <module>
ValueError: total size of new array must be unchanged
-------------------------------------------------------------------------
size는 전체 요소들의 개수를 반환하며 np.prod(obj.shape)와 같은 결과를 생성한다.
-------------------------------------------------------------------------
>>> x = np.zeros((3, 5, 2), dtype=np.complex128)
>>> x.size
30
>>> np.prod(x.shape)
30
-------------------------------------------------------------------------
기타
나머지 attribute 들은 다음 표에 정리하였다.
T | Same as self.transpose(), except that self is returned if self.ndim < 2. |
data |
배열의 시작을 가리키는 파이썬 버퍼 객체
|
dtype |
배열 요소의 데이터형
|
flags |
배열의 메모리 구조에 대한 정보
|
flat |
배열의 1차원 반복자
|
imag | 배열의 허수부 |
real | 배열의 실수부 |
size | 배열의 요소 전체의 개수 |
itemsize | 배열 요소의 바이트 크기 |
nbytes | 배열의 전체 요소가 차지하는 바이트 크기 |
ndim | 배열의 차수 |
shape | 배열의 차수별 크기. |
strides | Tuple of bytes to step in each dimension when traversing an array. |
ctypes | An object to simplify the interaction of the array with the ctypes module. |
base | Base object if memory is from some other object. |
댓글 없음:
댓글 쓰기