python - 根据单独的 numpy 向量中的值平铺 2D numpy 数组的行

标签 python arrays numpy vectorization

我有一个源数组:

a = array([[1, 1, 2, 2],
           [3, 4, 5, 6],
           [7, 7, 7, 8]])

还有一个向量,表示我想平铺数组的每一行的次数:

count = array([3, 1, 2])

我想得到:

results =array([[1, 1, 2, 2],
                [1, 1, 2, 2],
                [1, 1, 2, 2],
                [3, 4, 5, 6],
                [7, 7, 7, 8],
                [7, 7, 7, 8]]

是否有矢量化/numpy 方法来实现这一点?

目前我正在使用迭代循环方法,当 len(a) 和/或 count 包含高值时,它的速度非常慢。

最佳答案

numpy.repeat()是你所追求的:

代码:

np.repeat(a, count, axis=0)

测试代码:

import numpy as np

a = np.array([[1, 1, 2, 2],
              [3, 4, 5, 6],
              [7, 7, 7, 8]])

count = np.array([3, 1, 2])

print(np.repeat(a, count, axis=0))

结果:

[[1 1 2 2]
 [1 1 2 2]
 [1 1 2 2]
 [3 4 5 6]
 [7 7 7 8]
 [7 7 7 8]]

关于python - 根据单独的 numpy 向量中的值平铺 2D numpy 数组的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44172973/

相关文章:

python - 使用 Google+ 进行身份验证时在 session 中存储 oauth 凭据时出错

python - 输出维度的 Keras 错误

javascript - JSON 数组转换为 JS 对象数组

python - 使用 NumPy 查找所有 n 维直线和对角线

python - 'numpy.float64' 对象不可迭代 - 基于内容的过滤模型

Python 内存错误 : cannot allocate array memory

python - IO错误: Errno 13 Permission denied for specific files

python - Android 12 设备上的 Plyers GPS 模块存在问题

arrays - 将 2x6 数组按行 reshape 为 3x2x2

Javascript 根据两个值计算相同的对象值数组