私は現在NumpyとPythonを勉強しようとしています。次の配列があるとします。
import numpy as np
a = np.array([[1,2],[1,2]])
a
の次元を返す関数はありますか(例えば、aは2 x 2の配列です)?
size()
は4を返しますが、それはあまり役に立ちません。
慣例により、Pythonの世界では、numpy
のショートカットはnp
なので、
In [1]: import numpy as np
In [2]: a = np.array([[1,2],[3,4]])
Numpyでは、 次元 、 軸/軸 、 形状 は関連しており、時には似たような概念です。
Mathematics/Physicsでは、次元または次元は空間内の任意の点を指定するのに必要な最小座標数として非公式に定義されます。しかし、Numpyでは、 numpyのドキュメント によれば、それはaxis/axesと同じです。
Numpyでは次元は軸と呼ばれます。軸の数はrankです。
In [3]: a.ndim # num of dimensions/axes, *Mathematics definition of dimension*
Out[3]: 2
numpyでarray
をインデックスするn座標多次元配列は、軸ごとに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
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)
あなたは使用することができます。
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
shape
メソッドはa
がNumpyのndarrayであることを要求します。しかし、Numpyは純粋なPythonオブジェクトのイテラブルの形を計算することもできます。
np.shape([[1,2],[1,2]])
寸法に.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
Numpy配列の.shape属性を使用してください。各次元に直接アクセスするには、.shape [i]を使用してください。
たとえば、次のように書きます。
a = np.array([[11,12],[21,22],[31,32]])
print(a)
print("Shape: " + str(a.shape))
print("Shape (raws): " + str(a.shape[0]))
print("Shape (columns): " + str(a.shape[1]))
あなたが得るでしょう:
[[11 12]
[21 22]
[31 32]]
Shape: (3, 2)
Shape (raws): 3
Shape (columns): 2