[编辑]
好的,我的测试用例没有经过深思熟虑。我只测试了一维数组。在这种情况下,我会返回一个 64 位标量。如果我在 3D 数组上执行此操作,我会按预期得到 32 位。
我正在尝试计算一个非常大的 numpy 数组(600*600*4044)的平均值和标准偏差,并且我接近我的内存限制(在 64 位机器上为 16GB)。因此,我试图将所有内容处理为 float32 而不是默认的 float64。但是,每当我尝试处理数据时,即使我将 dtype 指定为 float32,我也会返回 float64。为什么会这样?是的,我可以在之后进行转换,但就像我说的那样,我已经接近我的 RAM 的极限,即使在处理步骤期间,我也会尽量保持一切尽可能小。下面是我得到的一个例子。
import scipy
a = scipy.ones((600,600,4044), dtype=scipy.float32)
print(a.dtype)
a_mean = scipy.mean(a, 2, dtype=scipy.float32)
a_std = scipy.std(a, 2, dtype=scipy.float32)
print(a_mean.dtype)
print(a_std.dtype)
退货
float32
float32
float32