Numpy数据大小是特征矩阵大小的两倍,是这样吗



我正在用生成numpy数组

p_desct = np.random.uniform(-1, 0.4, [5000000, 512])

内存大小几乎为~20G

特征矩阵(C++(中的相同数据:

Eigen::MatrixXf x_im = Eigen::MatrixXf::Random(5000000,512);

内存大小~9,6G

这种情况下numpy数组的内存使用量是同一矩阵的两倍吗?

还是我这里遗漏了什么?

默认情况下,Numpy数组使用64位浮点(通常称为"double"(,而C++数组使用32位浮点。这意味着numpy数组占用的内存是C++数组的两倍。如果希望使用32位浮点,请指定dtype = np.float32

另请参阅https://numpy.org/doc/stable/user/basics.types.html对于所有numpy数组数据类型

默认的numpy dtype是float_,但令人困惑的是,这是一个双精度[https://numpy.org/doc/stable/reference/arrays.scalars.html#numpy.float_]。

Eigen数据类型中的f后缀表示32位传统浮点,因此是numpy使用的64位双精度的一半大小。

尝试

np.随机.均匀(-1,0.4,[5000000512],dtype=np.foat32(并进行比较。

相关内容

最新更新