python - 重复值 n 次,n 在一个数组中

标签 python numpy vectorization

我有一个值数组 a,其值在每个索引 idx 我想重复一定数量 b[idx]次,在另一个数组 (b) 中的相同索引 idx 处给出,如下所示:

a = numpy.array([1, 2, 3 ,4, 5])
b = numpy.array([2, 3, 1, 2, 4])

期望的输出:

c = numpy.array([1, 1, 2, 2, 2, 3, 4, 4, 5, 5, 5, 5])

我意识到我可以做这样的事情:

len_a = numpy.shape(a)[0]
sum_b = sum(b)
c = numpy.zeros((1, 0))
for idx in range(len_a):
    repeated_a = numpy.repeat(a[idx], b[idx])
    repeated_a = numpy.reshape(repeated_a, (1, numpy.shape(repeated_a)[0]))
    c = numpy.hstack((c, repeated_a))

但是,循环不是一个好的选择,因为它很慢。 我该怎么做才能让它更快?也许是某种形式的矢量化。

最佳答案

您正在寻找为此目的而制作的内置重复功能。只需将两个数组都输入函数即可:

np.repeat(a,b)
#[1 1 2 2 2 3 4 4 5 5 5 5]

关于python - 重复值 n 次,n 在一个数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64216057/

相关文章:

python - 如何转换图像的背景颜色以匹配 Pygame 窗口的颜色?

python - Pandas 中的滚动百分比排名

R dplyr::mutate with ifelse 以全局变量为条件回收第一行的结果

python - 如何在悬停模板中包含跟踪名称?

python - 我如何在 Pandas 上进行独特的关键字简化和按字母顺序排序

python - Numpy 内存映射数组分配的内存问题

performance - 使用 1 的步幅对今天的 vDSP 性能仍然至关重要吗?

Python:矢量化/广播会提高速度吗?

python - 如何从 python 列表中删除\n 和\t?

python - Numpy:检查值是否为 NaT