2015-12-12 35 views
3

看來,任何numpy.empty()可以做,可以使用numpy.ndarray()很容易做到,例如:numpy.empty()在numpy.ndarray()上的目的是什麼?

>>> np.empty(shape=(2, 2), dtype=np.dtype('double')) 
array([[ 0., 0.], 
     [ 0., 0.]]) 
>>> np.ndarray(shape=(2, 2), dtype=np.dtype('double')) 
array([[ 0., 0.], 
     [ 0., 0.]]) 
>>> 

爲什麼我們需要numpy.empty()?它可以做一些numpy.ndarray()做不到的事情嗎?它是否只是爲了強調代碼閱讀器的註釋目的而創建一個未初始化的數組?

回答

3

始終使用np.emptynp.ndarray是構造數組的低級方式。它由np.emptynp.array使用。 np.ndarray公開一些你不應該(不小心)使用自己的細節。

從文檔字符串:

文檔字符串:

ndarray(形狀,D型細胞=浮子,緩衝液=無,偏移= 0, 步幅=無,爲了=無)

的數組對象表示固定大小項目的多維同類數組 。關聯的數據類型對象描述數組中每個元素的格式(其字節順序,它在內存中佔用多少字節,無論是整數,浮點數, 還是其他內容等)

應使用array,zerosempty(參見 參見下文的「參見」部分)構建陣列。這裏給出的參數是指用於實例化一個數組的一個低級方法(ndarray(...)) 。請參考numpy模塊,並檢查數組的方法和屬性。

獲取文檔字符串有:

>>> help(np.ndarray) 

或IPython的:

In: [1] np.ndarray? 

編輯

而作爲@hpaulj在評論中指出,這是有益的閱讀所有相關文件。除非你有充分的理由不這樣做,否則總是比empty更喜歡zeros。從empty的docsting:


empty,不像zeros,不設置數組值爲零, 並且因此可以是稍快。另一方面,它要求用戶手動設置 中的所有數值,並且應謹慎使用 。

+1

而'np。空'doc鼓勵我們使用'np.zeros'來代替。 – hpaulj

+0

@hpaulj感謝您的指針。在我的回答中添加了一個註釋。 –

+0

@Syncopated這個回答你的問題嗎? –