2016-12-01 218 views
-2

我試圖用empty()從numpty生成陣列,但奇怪的事情發生了:爲什麼numpy函數empty()只產生零?

empty(3); empty(4); empty(5) 

總是給零的陣列。即使非零數字(非常小的)發生的第一次,他們成了全零秒時間,例如,我輸入empty(5)首次:

array([ 0.00000000e+000, 0.00000000e+000, 2.12332334e-314, 
    2.12517151e-314, 0.00000000e+000]) 

,當我輸入empty(5)第二次:

array([ 0., 0., 0., 0., 0.]) 

我使用python的版本是2.7。

+4

您是否期望結果是隨機的? NumPy對數組包含的內容沒有任何承諾。 – user2357112

回答

3

參見https://docs.scipy.org/doc/numpy/reference/generated/numpy.empty.html

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

無法保證值是什麼。值恰好爲零的原因是內存未初始化,因此事先在內存中的任何內容都必須將這些地址的值保留爲零(主要是)。實質上,這些值將是完全隨機的,但不一定均勻分佈。

你的問題是,爲什麼你關心未初始化數組中的內容,以及爲什麼你甚至會首先查看這些值?你期望發生什麼?

+1

非常感謝您的信息!我沒有正確理解這個功能。 – Coraline

+0

@Coraine不客氣!將來,閱讀文檔以瞭解您正在處理的任何事情,這是避免不必要問這樣的明顯問題的好方法。另外,如果你覺得足夠,請記住接受我的答案。 –

+1

好的,謝謝你的建議。 – Coraline

相關問題