![](/img/trans.png)
[英]What is the difference between numpy.array([]) and numpy.array([[]])?
[英]What is the difference between ndarray and array in numpy?
Numpy 中的ndarray
和array
什么區別? 我在哪里可以找到 numpy 源代碼中的實現?
numpy.array
只是一個創建ndarray
的便捷函數; 它本身不是一個類。
您也可以使用numpy.ndarray
創建一個數組,但這不是推薦的方法。 從numpy.ndarray
的文檔字符串:
數組應該使用
array
、zeros
或empty
構造......這里給出的參數是指用於實例化數組的低級方法(ndarray(...)
)。
實現的大部分內容都在 C 代碼中, 這里是 multiarray ,但您可以從這里開始查看 ndarray 接口:
https://github.com/numpy/numpy/blob/master/numpy/core/numeric.py
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
以下兩行中的任何一行都會給您一條錯誤消息
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
類:使用__new__
創建數組有兩種模式:如果 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, ie skip first element array([2, 3])
從上面的例子我們注意到我們不能將一個列表分配給“緩沖區”,我們不得不使用 numpy.array() 來返回緩沖區的 ndarray 對象
結論:使用numpy.array()
如果你想使一個numpy.ndarray()
對象”
我認為使用np.array()
您只能創建 C,盡管您提到了順序,但當您使用np.isfortran()
檢查時,它顯示為 false。 但是當您根據提供的順序指定它創建的順序時,使用np.ndarrray()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.