簡體   English   中英

Numpy的vstack是否會創建一個新陣列 - 它結合的那個?

[英]Does Numpy's vstack create a new array - a copy of the ones it combines?

我正在編寫一些函數,這些函數沿着目錄樹向下,按名稱對文件進行排序,並在表中對它們進行編碼+更多信息。

這個表我定義為Numpy vstack數組。 在開始時,它向數組添加條目是快速的,但當它達到大約20 000個條目時,它會減慢很多。 這么多,為了達到目標大約9萬個人口,它需要大約10分鍾。

我非常懷疑vstack是罪魁禍首,因為它可能會復制整個表格+我追加的行。 官方的Numpy文檔說vstacking只不過是“連接”......但這並沒有回答我的問題。

因此,np.vstack()是否會查看要粘合在一起的數組的大小,然后將所需的內存和復制到我們正在堆疊的數組的內容中進行操作?

更新:女士們,先生們,對於統計數據,使用列表將執行時間提高到0.5秒。 這比實際速度提高了20多倍,實際上它甚至還低於此,因為我的測量包括一些額外的操作。

你是對的, np.vstack復制完整的數組。

您可以通過小型python體驗來確認它:

a = np.array([[1,2,3]])
b = np.array([[4,5,6]])
res = np.vstack((a,b))
res
array([[1, 2, 3],
       [4, 5, 6]])

然后,如果修改數組a並打印res,則可以看到res未被修改

a[0,2] = 19
res
array([[1, 2, 3],
       [4, 5, 6]])

暫無
暫無

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

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