我有一个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()
时有没有办法强制进行此设置?