Numpy复数矩阵运算优化:如何优化频谱共轭乘法函数?
频谱共轭乘法函数优化方案
你的代码本质是计算x与y的共轭逐元素相乘,但手动嵌套循环的实现完全没利用NumPy的向量化运算优势,效率极低。直接用NumPy内置的共轭和乘法操作就能大幅优化,代码也更简洁。
优化后的代码
import numpy as np from numpy import ndarray def mul_spectrums_with_conj(x: ndarray, y: ndarray) -> ndarray: return x * np.conj(y)
优化说明
- 原函数手动实现的
acc0和acc1,正好对应x * np.conj(y)的实部和虚部,NumPy会自动完成逐元素的共轭乘法计算 - NumPy的向量化操作是底层C实现的,比Python层面的嵌套循环快几个数量级,处理大尺寸数组时优势尤为明显
- 代码更简洁易读,减少了手动维护循环和临时变量的出错概率
如果需要强制输出complex64类型,可在返回时显式转换:
return (x * np.conj(y)).astype(np.complex64)
内容的提问来源于stack exchange,提问作者Sathya Bhat
相关产品推荐
相关产品推荐

