我有一个输入数据流,它有交错的实数和虚数整数。将这些值转换为complex64值是我程序中最慢的操作。这是我目前的做法:
import numpy as np
a = np.zeros(1000000, dtype=np.int16)
b = np.complex64(a[::2]) + np.complex64(1j) * np.complex64(a[1::2])
如果不进行C扩展或使用cython之类的东西,我能做得更好吗?如果我不能做得更好,那么使用像其中一种这样的技术最简单的方法是什么?
答案 0 :(得分:16)
[~]
|1> import numpy as np
[~]
|2> a = np.zeros(1000000, dtype=np.int16)
[~]
|3> b = a.astype(np.float32).view(np.complex64)
[~]
|4> b.shape
(500000,)
[~]
|5> b.dtype
dtype('complex64')