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中完成工作?
答案 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')