python - 使用 numpy 和 fft 在 for 循环中进行多核处理

标签 python loops numpy fft multicore

我使用 numpy 和 fft 计算向量。 我使用了 numpy 广播方法和 for 循环。 两种方法的速度相似。 如何使用多核、numpy 和 fft 计算向量?

import numpy as np
from numpy.fft import fft, ifft

num_row, num_col = 6000, 13572

ss = np.ones((num_row, num_col), dtype=np.complex128)
sig = np.random.standard_normal(num_col) * 1j * np.random.standard_normal(num_col)

# for loop    
for idx in range(num_row):
    ss[idx, :] = ifft(fft(ss[idx, :]) * sig)

# broadcast
ss = ifft(fft(ss, axis=1) * sig, axis=1)

结果

loop : 10.798867464065552 sec
broadcast : 11.298897981643677 sec

最佳答案

您可以将 axis 参数用于 fftifft 以及广播:

ss = np.ones((num_row, num_col), dtype=np.complex128)
sig = np.random.standard_normal(num_col) * 1j * np.random.standard_normal(num_col)

ss = ifft(fft(ss, axis=1) * sig, axis=1)

关于python - 使用 numpy 和 fft 在 for 循环中进行多核处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49903741/

相关文章:

loops - 将递归过程转变为迭代过程 - SICP 练习 1.16

R:摆脱 for 循环和加速代码

python - 使用 Pandas 和 Numpy 按 ID 索引查找比率的计算时间很长

python - 比较将 numpy 数组写入磁盘的两种方法

python - 尝试交叉两个数据帧,一个带有值,另一个带有 boolean 值

python - 在django中显示列表第一个元素的属性

python - 心脏病预测的反向传播 - 结果不准确?

Python BeautifulSoup 从保存的 HTML 网页中提取表格

c - 我如何将一个字符与 C 中的不同字母进行比较?

python - 导入错误 : cannot import name __check_build while importing TfidfVectorizer from sklearn