回答:
numpy.array
を作成するための便利な関数ndarray
です。それ自体はクラスではありません。
を使用して配列を作成することもできますnumpy.ndarray
が、これは推奨される方法ではありません。のドキュメント文字列からnumpy.ndarray
:
配列は
array
、zeros
またはempty
... を使用して構築する必要があります。ここで指定するパラメーターはndarray(...)
、配列をインスタンス化するための低レベルのメソッド()を参照します。
実装の大部分はCコードにあり、ここではマルチ配列にありますにありますが ndarrayインターフェイスを確認できます。
https://github.com/numpy/numpy/blob/master/numpy/core/numeric.py
np.array
私がよくするように、それがクラスではないことを忘れた場合、これはあなたを噛みます。x = np.array([1,2.1,3])
if isinstance(x,np.array): # will give you a TypeError
array_getarray
の実装ですnumpy.ndarray.__array__
。少なくとも現在の実装ではnumpy.array
から始まり_array_fromobject
ます。
numpy.array
はを返す関数ですnumpy.ndarray
。オブジェクトタイプnumpy.arrayはありません。
numpy.arrayとnumpy.ndarrayの違いを示すコード例のほんの数行
ウォームアップステップ:リストの作成
a = [1,2,3]
タイプを確認してください
print(type(a))
あなたは得るでしょう
<class 'list'>
np.arrayを使用して(リストから)配列を作成します
a = np.array(a)
または、ウォームアップの手順をスキップして、直接
a = np.array([1,2,3])
タイプを確認してください
print(type(a))
あなたは得るでしょう
<class 'numpy.ndarray'>
それはあなたに伝えます numpyの配列の型はnumpy.ndarrayです
タイプで確認することもできます
isinstance(a, (np.ndarray))
そしてあなたは得るでしょう
True
次の2行のいずれかでエラーメッセージが表示されます
np.ndarray(a) # should be np.array(a)
isinstance(a, (np.array)) # should be isinstance(a, (np.ndarray))
numpy.ndarray()
はクラスですが、numpy.array()
は作成するメソッド/関数ndarray
です。
numpy docsでは、ndarray
クラスから配列を作成したい場合は、引用されているように2つの方法でそれを行うことができます:
1- array()
、zeros()
またはempty()
メソッドの使用:
配列は、配列、ゼロ、または空を使用して構築する必要があります(以下の「関連項目」セクションを参照)。ここで指定するパラメーターはndarray(…)
、配列をインスタンス化するための低レベルのメソッド()を参照します。
2- ndarray
クラスから直接:
を使用して配列を作成する2つのモードがあります__new__
。bufferがNoneの場合、shape、dtype、orderのみが使用されます。bufferがbufferインターフェースを公開するオブジェクトである場合、すべてのキーワードが解釈されます。
以下の例では、バッファ値を割り当てていないため、ランダムな配列を示しています。
np.ndarray(shape=(2,2), dtype=float, order='F', buffer=None) array([[ -1.13698227e+002, 4.25087011e-303], [ 2.88528414e-306, 3.27025015e-309]]) #random
別の例は、配列のオブジェクトをバッファの例に割り当てることです。
>>> np.ndarray((2,), buffer=np.array([1,2,3]), ... offset=np.int_().itemsize, ... dtype=int) # offset = 1*itemsize, i.e. skip first element array([2, 3])
上記の例から、「バッファ」にリストを割り当てることができず、numpy.array()を使用してバッファのndarrayオブジェクトを返す必要があったことがわかります
結論:オブジェクトnumpy.array()
を作成する場合に使用しnumpy.ndarray()
ます」