python - 在 numpy 中创建一个新数组,以不同的多样性选择性地复制旧数组的行

标签 python numpy

我在 numpy 中有一个包含 n 行的二维数组,以及一个包含 n 个元素的一维数组,其中第 i 个元素指定原始数组的第 i 行应进入新数组的次数。例如,如果我的二维数组是:

array([[1, 1, 1],
       [2, 2, 2],
       [3, 3, 3],
       [4, 4, 4],
       [5, 5, 5]])

我的一维数组是

array([2, 0, 1, 0, 3])

那么我希望新数组是:

array([[1, 1, 1],
       [1, 1, 1],
       [3, 3, 3],
       [5, 5, 5],
       [5, 5, 5],
       [5, 5, 5]])

我不知道如何有效地做到这一点,有人有什么想法吗?

最佳答案

你可以使用 np.repeat()重复数组的元素。

In [174]: x.repeat(np.array([2, 0, 1, 0, 3]), axis=0)
Out[174]:
array([[1, 1, 1],
       [1, 1, 1],
       [3, 3, 3],
       [5, 5, 5],
       [5, 5, 5],
       [5, 5, 5]])

详细信息:

In [175]: x
Out[175]:
array([[1, 1, 1],
       [2, 2, 2],
       [3, 3, 3],
       [4, 4, 4],
       [5, 5, 5]])

In [176]: repeat_on = np.array([2, 0, 1, 0, 3])

In [177]: x.repeat(repeat_on, axis=0)
Out[177]:
array([[1, 1, 1],
       [1, 1, 1],
       [3, 3, 3],
       [5, 5, 5],
       [5, 5, 5],
       [5, 5, 5]])

关于python - 在 numpy 中创建一个新数组,以不同的多样性选择性地复制旧数组的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30111771/

相关文章:

python - 具有 NaN 值的 Scipy 中的 T 检验

python - 如果两个矩阵相同,则仅返回一个 bool 语句

python - 为什么简单回归的 TensorFlow 结果与其输入相差甚远?

python - 如何加速Python字符串匹配代码

python - Alembic 不在自动生成中添加 Cascade 信息?

python - 从字典中删除带有空字符串的键的有效方法

python - 如何设置 'system level' 环境变量?

java - 如何允许匿名上传到云存储

python - 如何访问滚动运算符中的多列?

python - 如何使用lambdaify来评估我的函数?