NumPy数组如何实现本地类型转换?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (21)

假定NumPy数组int32,如何将其转换为float32?所以基本上,我想

a = a.astype(numpy.float32)

而不复制数组。它很大。

这样做的原因是,我有两个算法用于计算a。其中之一返回一个int32,另一个返回一个float32。所有进一步的计算都假设a的数组float32

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

提问于
用户回答回答于

可以使用不同的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)

若要显示转换已到位,请注意复制。

print(x)

输出:

array([         0, 1065353216, 1073741824, 1077936128, 1082130432,
       1084227584, 1086324736, 1088421888, 1090519040, 1091567616])
用户回答回答于

扫码关注云+社区