将一维数组中的元素排序为三角矩阵

sort elements from 1d array into triangular matrix

我正在尝试移动由

组成的一维数组 (55,) 中的元素
array([1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3,
       4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4,
       5, 1, 2, 3, 4, 1, 2, 3, 1, 2, 1]).

我想将这个一维数组组织成如下形式:

[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0],
 [0, 0, 0, 0],
 [0, 0, 0],
 [0, 0],
 [0]]

所以我想这样结束:

[[1, 2, 3, 4, 5, 6, 7, 8, 9, 0],
 [1, 2, 3, 4, 5, 6, 7, 8, 9],
 [1, 2, 3, 4, 5, 6, 7, 8],
 [1, 2, 3, 4, 5, 6, 7],
 [1, 2, 3, 4, 5, 6],
 [1, 2, 3, 4, 5],
 [1, 2, 3, 4],
 [1, 2, 3],
 [1, 2],
 [1]]

最有效的方法是什么?另请注意,我想对包含 325K 个元素的大型数组执行此操作,以将其组织成 807 个不同的行。

如果您确切知道要在第一行中放置多少个项目,则可以这样做

import numpy as np

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

b = []
index = 0

for i in range(10, 0, -1):
    b.append(a[index:index+i])
    index += i

for j in b:
    print(j)

这将输出这个

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