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

我有一个值数组 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]

https://stackoverflow.com/questions/64216057/

相关文章:

java - 检查一个数组列表是否包含两个字符串

java - 如何使用 void set 方法在静态常量帮助程序类中创建对象?

haskell - 在 Haskell 的 do 上下文中应用构造函数

python - 为什么 python 的 "gc.collect()"没有按预期工作?

python-3.x - Python Pandas : groupby one column, 只

c# - 无法将 TextMeshPro 文本获取到 Unity 中的变量槽

python - 在Python中随机生成二维列表

javascript - 使用 useEffect 加载脚本

python-3.x - Pygame - 不存在 "Setup"文件,正在运行 "buildcon

reactjs - 不能在 JSX 属性中使用 bool 值