簡體   English   中英

Windows和Ubuntu的Numpy陣列之間的內存使用差異

[英]Memory usage difference between Windows and Ubuntu for a Numpy array

就像標題所說,我看到Windows和Ubuntu之間的numpy數組的內存使用量有很大的不同。

這是復制此問題的簡單代碼:

import numpy as np
import joblib

a = [1]*1000
b = [a for i in range(1000)]
np_arr = np.array(b)

joblib.dump(np_arr, 'arr.h5')

如果我在Windows 10計算機上運行此代碼,則arr.h5的大小為3907KB

但是我在Ubuntu 18.04上運行它,它是7812KB

主要問題是我正在處理大型數據集,並且代碼在具有16GB的Windows計算機上可以正常運行,但是在32GB的Ubuntu上卻出現內存錯誤

是的,這是Windows和Linux之間的區別...

numpy中的默認整數是np.int_ ,它映射到C long請參閱docs C標准沒有確切指定long的大小,只是它至少為32位 (4字節)。 實際大小取決於編譯器和cpu體系結構 numpy Bug Tracker上已經有關於此問題的討論。

通過顯式設置整數類型可以避免該問題:

np_arr = np.array(b, dtype=np.int32)

如果知道數組將保留的最小和最大值,則可以選擇較小的整數類型,例如int16或uint8,從而擺脫困境。

暫無
暫無

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

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