」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 何時在 NumPy 數組賦值中分配額外的記憶體?

何時在 NumPy 數組賦值中分配額外的記憶體?

發佈於2024-11-03
瀏覽:494

When Is Additional Memory Allocated in NumPy Array Assignment?

Numpy 陣列賦值:記憶體分配差異

在NumPy 中,向陣列賦值有三種常用方法:

  • B = A
  • B[:] = A
  • numpy.copy(B, A)

B = A

當您使用B = A 時,您並不是在建立新陣列。相反,您將新名稱 (B) 綁定到現有陣列 (A)。因此,對一個陣列所做的任何修改都會反映在另一個陣列中。

B[:] = A

此語法建立一個新陣列 B,其中包含與 A 相同的維度和值。原始數組 A 未修改。與numpy.copy.

numpy.copy(B, A)

此方法需要更少的記憶體分配,因為您編寫的這種方法是不合法的。應該是 B = numpy.copy(A)。 numpy.copy 建立一個與 A 具有相同維度和值的新陣列 B。與 B[:] = A 相比,此方法需要更多的記憶體分配,因為它從原始數組建立資料的單獨實體副本。

何時分配額外記憶體?

當您使用 numpy.copy 建立陣列的新實體副本時,會指派額外記憶體。這是因為它為複製的資料分配了一個新的連續記憶體區塊。

何時未分配記憶體?

當您使用 B = A 時,未分配記憶體因為您只是重命名原始陣列。當您使用 B[:] = A 時,也不會分配內存,因為它重複使用與原始數組相同的內存位置。

版本聲明 本文轉載於:1729560494如有侵犯,請洽[email protected]刪除
最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3