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

标签 python performance numpy

下面 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/

相关文章:

python - 在 Flask 应用程序中的模块之间共享对象

java - 使用 ActiveMQ 调度程序的性能下降问题

algorithm - 迪士尼的 FastPass 是否有效和/或有用的队列理论

Python - 提高 Itertools 排列计算的性能速度;重复=15

python - Numpy:从最小值中减去时如何防止循环到最大值

python - 如何根据计算条件新建一列?

python - 根据条件在 numpy 数组的元素中进行数学运算的有效方法

python - 导出特定的工作表,并保存不同的文件 openpyxl

python - 如何旋转 x 轴标签

python - 高效的单行代码对列表中每个 `i` 个元素中的第 `n` 个元素进行子采样