首页 > 解决方案 > Numpy 数据大小是 Eigen Matrix 大小的两倍吗?

问题描述

我正在生成 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 数组的情况使同一矩阵的内存使用量加倍吗?

还是我在这里遗漏了什么?

标签: pythonc++numpyeigen

解决方案


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

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

尝试

np.random.uniform(-1, 0.4, [5000000, 512], dtype=np.float32) 并进行比较。


推荐阅读