簡體   English   中英

附加到np.array,但不留下?

[英]Append to np.array, but not staying?

只是試圖將項目添加到數組中,但是由於某種原因,此操作將返回而沒有添加的十進制數。

import numpy as np
newposition = np.array([1,2,3])
np.append(newposition,(np.random.uniform(0,0.25)))
print newposition

返回以下內容,即無需添加任何內容。 有什么建議么?

[1 2 3]

得到它了。 我將創建一個新值列表,然后將其轉換為數組,並將舊的數組名稱分配給新的數組。

不要養成使用np.append建立數組的壞習慣!

追加到numpy數組很昂貴,因為沒有辦法在內存中不創建該數組的新副本就可以做到( np.concatenatenp.vstack等也是如此)。 隨着陣列變得越來越大,復制它的速度越來越慢。 1700長的1D向量仍然沒有那么大,但是當您處理數百萬個元素時,復制確實會影響性能。

更好的方法是創建一個具有正確最終大小的空數組,然后根據需要填寫適當的索引。 例如:

# create an empty array of the final size
newposition = np.empty(1700, np.float)

# fill in the first three values
newposition[:3] = 1, 2, 3

# fill in the rest
for ii in xrange(3, 1700):
    newposition[ii] = np.random.uniform(0, 0.25)

# or whatever...

您尚未確切顯示如何構建其余的newposition數組,但是在上面的愚蠢示例中,使用np.random.uniformsize=參數np.random.uniform填充其余的行會更快。 :

newposition[3:] = np.random.uniform(0, 0.25, size=1697)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM