[英]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.concatenate
, np.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.uniform
的size=
參數np.random.uniform
填充其余的行會更快。 :
newposition[3:] = np.random.uniform(0, 0.25, size=1697)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.