web-dev-qa-db-ja.com

numpyのndarrayとarrayの違いは何ですか?

Numpyのndarrayarrayの違いは何ですか?そして、numpyソースコードのどこに実装がありますか?

189
flxb

numpy.arrayは、単にndarrayを作成するための便利な関数です。クラス自体ではありません。

numpy.ndarrayを使用して配列を作成することもできますが、推奨される方法ではありません。 numpy.ndarrayのdocstringから:

配列は、arrayzeros、またはemptyを使用して構築する必要があります...ここで指定するパラメーターは、配列をインスタンス化するための低レベルメソッド(ndarray(...))を参照します。

実装の大部分はCコードであり、 ここではmultiarray ですが、ndarrayインターフェイスの確認はここから開始できます。

https://github.com/numpy/numpy/blob/master/numpy/core/numeric.py

165
wim

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))
22
Ying

numpy.ndarray()はクラスであり、numpy.array()はndarrayを作成するメソッド/関数です。

numpy docsでは、ndarrayクラスから配列を作成する場合は、引用されている2つの方法でそれを行うことができます:

1- array()、zeros()、またはempty()メソッドを使用:Arraysは、array、zeros、またはemptyを使用して構築する必要があります(以下の関連セクションを参照)。ここで指定するパラメーターは、配列をインスタンス化するための低レベルのメソッド(ndarray(…))を参照します。

2- ndarrayクラスから直接:newを使用して配列を作成する2つのモードがあります。bufferがNoneの場合、shape、dtype、orderのみが使用されます。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.ndarray()オブジェクト」を作成する場合は、「numpy.array()」を使用します。

3

np.array()を使用すると、np.isfortran()を使用してチェックするとfalseと表示される場合と同様に、Cのみを作成できると思います。ただし、np.ndarrray()では、指定された順序に基づいて作成する順序を指定します。

0
Sujith Rao