Numpy 陣列賦值:記憶體分配差異
在NumPy 中,向陣列賦值有三種常用方法:
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 時,也不會分配內存,因為它重複使用與原始數組相同的內存位置。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3