[英]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.