使用'out'参数将ndarray.take()中的float32转换为float64

时间:2014-11-10 17:19:51

标签: python numpy

我有一个float32 NumPy数组(从C库中获取),我想复制一些由' fancy'指定的值。索引到现有的float64数组中。

到目前为止,我有:

import numpy as np
a = np.array([0.0, 0.5, 1.0], dtype=np.float32)
b = np.empty(2, dtype=np.float64)
b[:] = a[[2, 0]]

这就是我想要的,但我想避开additional copy caused by the 'fancy' indexing。所以我尝试将ndarray.take()out参数一起使用:

a.take([2, 0], out=b)

这不起作用,而是提出TypeError

  

TypeError:根据规则' safe'

,无法将dtype(' float64')中的数组数据转换为dtype(' float32')

我怎样才能让它发挥作用? 我想避免复制,更重要的是,在分配步骤中避免内存分配。

我在numpy.nditer中找到casting个参数,似乎casting='same_kind'符合我的情况。使用ndarray.take()时有没有办法强制进行此设置?

0 个答案:

没有答案