给定一个NumPy数组int32,如何将其转换为float32 原位 ?所以基本上,我想做
int32
float32
a = a.astype(numpy.float32)
而不复制阵列。好大
这样做的原因是我有两种算法来计算a。其中一个返回一个数组int32,另一个返回一个数组float32(这是两种不同算法所固有的)。所有进一步的计算都假定a是的数组float32。
a
目前,我在通过调用的C函数中进行了转换ctypes。有没有办法在Python中做到这一点?
ctypes
您可以使用其他dtype创建视图,然后就地复制到视图中:
import numpy as np x = np.arange(10, dtype='int32') y = x.view('float32') y[:] = x print(y)
产量
array([ 0., 1., 2., 3., 4., 5., 6., 7., 8., 9.], dtype=float32)
要显示转换是否就位,请注意 从 复制x到已y更改x:
x
y
print(x)
版画
array([ 0, 1065353216, 1073741824, 1077936128, 1082130432, 1084227584, 1086324736, 1088421888, 1090519040, 1091567616])