小编典典

NumPy数组的就地类型转换

python

给定一个NumPy数组int32,如何将其转换为float32 原位 ?所以基本上,我想做

a = a.astype(numpy.float32)

而不复制阵列。好大

这样做的原因是我有两种算法来计算a。其中一个返回一个数组int32,另一个返回一个数组float32(这是两种不同算法所固有的)。所有进一步的计算都假定a是的数组float32

目前,我在通过调用的C函数中进行了转换ctypes。有没有办法在Python中做到这一点?


阅读 204

收藏
2020-12-20

共1个答案

小编典典

您可以使用其他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

print(x)

版画

array([         0, 1065353216, 1073741824, 1077936128, 1082130432,
       1084227584, 1086324736, 1088421888, 1090519040, 1091567616])
2020-12-20