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
注:関数呼び出し構文を使用して呼び出されないため、関数としてよりも属性shapeとしてより正確に記述できます。
nobar

17
@nobarは実際にはプロパティです(実際には属性と関数の両方です)
wim

@wimより具体的には、プロパティはクラスです。クラスプロパティ(クラスに配置するプロパティ)の場合、それらはクラスの属性として公開されるプロパティタイプのオブジェクトです。Pythonでは、属性はドットに続く名前です。
ペドロロドリゲス

2
あなたが本当につまづきたいなら、それは記述子です。けれどもproperty、それ自体がクラスで、ndarray.shapeクラスではない、それはプロパティの型のインスタンスです。
WIM

66

最初:

慣例により、Pythonの世界ではのショートカットnumpynpなので、

In [1]: import numpy as np

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

第二:

Numpyでは、dimensionaxis / axesshapeは関連しており、時には類似した概念です。

寸法

数学/物理学、寸法または次元非公式空間内の任意の点を指定するために必要な座標の最小数として定義されます。しかしNumpyでは、numpy docによると、それはaxis / axesと同じです:

Numpyでは次元は軸と呼ばれます。軸数はランクです。

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

軸/軸

n番目のインデックスにAN座標arraynumpyの中。また、多次元配列は、軸ごとに1つのインデックスを持つことができます。

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)

入力が派手な配列ではなくリストのリストである場合にも機能します

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

またはタプルのタプル

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

np.shapeshape属性がない場合、最初に引数を配列に変換します。そのため、リストとタプルの例で機能します。
hpaulj 2018

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メソッドではa、Numpy ndarrayである必要があります。しかし、Numpyは純粋なpythonオブジェクトのイテラブルの形状を計算することもできます:

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.