Numpy:从两个实数数组创建复杂数组的有效方法

问题描述 投票:1回答:1

我有两个实数数组(ab),我想创建一个复杂的数组(c),该数组将两个实数数组分别作为其实部和虚部。

最简单的是

c = a + b * 1.0j

但是,由于我的数据量很大,所以这样的代码效率不是很高。

我们还可以执行以下操作,

c = np.empty(data_shape)
c.real = a
c.imag = b

我想知道是否有更好的方法(例如使用buffer或其他方法?]

非常感谢!

python arrays numpy scipy memory-efficient
1个回答
1
投票

由于实部和虚部必须是连续的,所以无论如何都必须为数据分配另一个缓冲区。因此,问题中显示的第二种方法与您可能获得的效率差不多。一种选择是

np.stack((a, b), axis=1).view(np.complex).ravel()

这适用于一维数组。更大的尺寸会稍微复杂一些,因为您必须预先汇总输入,然后重新调整它们的形状,或者排列轴,以便可以沿最后一个轴连接。

© www.soinside.com 2019 - 2024. All rights reserved.