将numpy数组运算符保存在np.float32中

时间:2011-05-03 22:30:54

标签: numpy precision

a = np.random.random((512,512,3)).astype(np.float32)
b = np.ones((512,512,1), dtype=np.int32)
c = a / b
c.dtype

>> dtype('float64')

将float32矩阵除以int32矩阵得到一个float64矩阵。目前我必须做

return c.astype(np.float32)

这是CPU的额外工作。有没有办法让我避免最终转换并告诉numpy在float32中完成工作?

1 个答案:

答案 0 :(得分:3)

您必须使用out的{​​{1}}参数。

np.divide()

在numpy 1.6中,您可以[~/scratch] |1> a = np.random.random((512,512,3)).astype(np.float32) [~/scratch] |2> b = np.ones((512,512,1), dtype=np.int32) [~/scratch] |3> c = np.empty_like(a) [~/scratch] |4> c = np.divide(a, b, c) [~/scratch] |5> c.dtype dtype('float32')