有效地替换应用于numpy数组的vstack + concatenate

时间:2018-02-28 20:45:42

标签: python performance numpy

下面的方块中的最后两行在我的实际代码中重复了数百万次:

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()结合起来然后将结果添加到数组的某个部分似乎不是最佳的。

是否有更好的方法,即:更有效,这样做的方式?

1 个答案:

答案 0 :(得分:2)

您可以使用np.concatenate()和简单的广播

In [18]: np.concatenate((a1, a2, a1, a2))[:,None]