下面 block 中的最后两行在我的实际代码中重复了数百万次:
import numpy as np
# Data with proper shape
N1, N2 = 3, 5
aa = np.random.uniform(0., 1., (23, 2000))
a1 = np.random.uniform(0., 1., N1)
a2 = np.random.uniform(0., 1., N2)
# Replace these two lines as efficiently as possible
a3 = np.vstack(np.concatenate((a1, a2, a1, a2)))
aa[:(N1 + N2 + N1 + N2)] = aa[:(N1 + N2 + N1 + N2)] + a3
将 np.vstack()
与 np.concatenate()
组合,然后将结果添加到数组的一部分似乎不太理想。
有没有更好的,即:更高效的方法来做到这一点?
最佳答案
您可以使用np.concatenate()
和一个简单的广播:
In [18]: np.concatenate((a1, a2, a1, a2))[:,None]
关于python - 有效替换应用于 numpy 数组的 vstack + concatenate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49038238/