我有一个n行的n行的二维数组,以及一个由n个元素组成的1-D数组,其中第i个元素指定原始数组的第i行应该进入新数组的次数.例如,如果我的2D数组是:
array([[1, 1, 1],
[2, 2, 2],
[3, 3, 3],
[4, 4, 4],
[5, 5, 5]])
Run Code Online (Sandbox Code Playgroud)
而我的一维阵列是
array([2, 0, 1, 0, 3])
Run Code Online (Sandbox Code Playgroud)
然后我想新的数组是:
array([[1, 1, 1],
[1, 1, 1],
[3, 3, 3],
[5, 5, 5],
[5, 5, 5],
[5, 5, 5]])
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚如何有效地做到这一点,有没有人有任何想法?
您可以使用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]])
Run Code Online (Sandbox Code Playgroud)
细节:
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]])
Run Code Online (Sandbox Code Playgroud)