我在 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/