numpy数组中所有行对的更快嵌套for循环

pdsfdshx  于 2023-02-08  发布在  其他
关注(0)|答案(1)|浏览(136)

我有一个numpy数组,它基本上是以1000 Hz采样一小时的256个通道记录的振荡相位。因此,我得到的numpy数组大小为256 x 5000000。我想计算所有通道对的Phase locking value(行)。锁相值是振荡耦合程度的度量。这里有一种有效的方法,但显然很耗时。我有128GB内存可用。

x = np.array([]) # 256 x 5000000
Nchans = 256
op = np.empty([Nchans, Nchans])
op[:] = np.nan
for a in range(Nchans):
    for b in range(Nchans):
        op[a,b] = np.abs(np.nansum(np.exp(np.complex(0,1)*(x[a] - x[b]))))/x.shape[1]

有什么办法可以加快计算速度吗?

eqqqjvef

eqqqjvef1#

complex_phase_diff = np.abs(np.nansum(np.exp(np.complex(0,1) * np.subtract.outer(x[a], x[b])), axis=1)) / x.shape[1]

相关问题