Numpy 배열 치수


367

현재 Numpy와 Python을 배우려고합니다. 다음과 같은 배열이 주어집니다.

import numpy as np
a = np.array([[1,2],[1,2]])

a(ega는 2 x 2 배열입니다) 의 차원을 반환하는 함수가 있습니까?

size() 4를 반환하고 그다지 도움이되지 않습니다.


26
조언 : shapeNumPy에서 "치수"는이라고합니다 . 귀하의 경우 NumPy가 치수를 부르는 것은 2입니다 ( ndim). 일반적인 NumPy 용어를 아는 것이 유용합니다. 이렇게하면 문서를보다 쉽게 ​​읽을 수 있습니다!
Eric O Lebigot

답변:


498

그것은이다 .shape:

ndarray. 모양
배열 치수 튜플.

그러므로:

>>> a.shape
(2, 2)

25
참고 : 함수 호출 구문을 사용하여 호출되지 않으므로 function 보다 속성shape 으로 더 정확하게 설명 될 수 있습니다 .
nobar

17
@nobar 실제로 이것은 속성 ( 실제로 는 속성이자 함수 임)
wim

@wim 더 구체적으로 속성은 클래스 입니다. 클래스 속성 (클래스에 넣은 속성)의 경우 클래스 속성으로 노출되는 속성 유형의 객체입니다. 파이썬에서 속성 은 점 뒤에 오는 이름 입니다.
Pedro Rodrigues

2
nitpick을 정말로 원한다면 설명자입니다. property자체는 클래스 이지만 클래스 ndarray.shape는 아니지만 속성 유형의 인스턴스입니다.
wim

66

먼저:

관습 적으로 파이썬 세계에서 바로 가기 numpy는 다음 np과 같습니다.

In [1]: import numpy as np

In [2]: a = np.array([[1,2],[3,4]])

둘째:

Numpy에서 dimension , axis / axes , shape 는 관련이 있으며 때로는 유사한 개념입니다.

치수

에서는 수학 / 물리 치수 또는 비공식적 차원 공간 내의 임의의 점을 지정하기 위해 필요한 좌표의 최소 개수로 정의된다. 그러나 Numpy 에서 numpy doc 에 따르면 축 / 도끼와 동일합니다.

Numpy 치수에서 좌표축이라고합니다. 축 수는 순위입니다.

In [3]: a.ndim  # num of dimensions/axes, *Mathematics definition of dimension*
Out[3]: 2

축 / 축

n 번째 인덱스에 좌표 arrayNumPy와한다. 다차원 배열은 축당 하나의 인덱스를 가질 수 있습니다.

In [4]: a[1,0]  # to index `a`, we specific 1 at the first axis and 0 at the second axis.
Out[4]: 3  # which results in 3 (locate at the row 1 and column 0, 0-based index)

모양

사용 가능한 각 축을 따라 얼마나 많은 데이터 (또는 범위)를 설명합니다.

In [5]: a.shape
Out[5]: (2, 2)  # both the first and second axis have 2 (columns/rows/pages/blocks/...) data

45
import numpy as np   
>>> np.shape(a)
(2,2)

입력이 numpy 배열이 아니라 목록 목록 인 경우에도 작동합니다.

>>> a = [[1,2],[1,2]]
>>> np.shape(a)
(2,2)

또는 튜플 튜플

>>> a = ((1,2),(1,2))
>>> np.shape(a)
(2,2)

np.shape먼저 shape 속성이 없으면 인수를 배열로 바꿉니다. 그래서리스트와 튜플 예제에서 작동합니다.
hpaulj

17

.shape를 사용할 수 있습니다

In: a = np.array([[1,2,3],[4,5,6]])
In: a.shape
Out: (2, 3)
In: a.shape[0] # x axis
Out: 2
In: a.shape[1] # y axis
Out: 3

9

.ndim치수에 사용 .shape하고 정확한 치수를 알 수 있습니다

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

var.ndim
# displays 2

var.shape
# display 6, 2

.reshape기능을 사용하여 치수를 변경할 수 있습니다

var = np.array([[1,2,3,4,5,6], [1,2,3,4,5,6]]).reshape(3,4)

var.ndim
#display 2

var.shape
#display 3, 4

7

shape방법은 aNumpy ndarray 가 필요합니다 . 그러나 Numpy는 순수한 파이썬 객체의 이터 러블 모양을 계산할 수도 있습니다.

np.shape([[1,2],[1,2]])

1

a.shape의 한정된 버전입니다 np.info(). 이것 좀 봐:

import numpy as np
a = np.array([[1,2],[1,2]])
np.info(a)

class:  ndarray
shape:  (2, 2)
strides:  (8, 4)
itemsize:  4
aligned:  True
contiguous:  True
fortran:  False
data pointer: 0x27509cf0560
byteorder:  little
byteswap:  False
type: int32
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.