将数据放入特别形状的列表中

Yux*_*ang 2 python numpy scipy

我有一个如下所示的列表:

my_list = [[20, 15, 10], [15, 22, 37, 46], [22, 91]]
Run Code Online (Sandbox Code Playgroud)

所以它是二维的,但不是每一行都有相同数量的元素.

我现在有一个扁平的ndarray,如:

my_ndarray = np.array([9, 2, 4, 4, 1, 6, 7, 8, 17])
Run Code Online (Sandbox Code Playgroud)

与my_list具有相同数量的元素.现在我想将my_ndarray塑造成与my_list相同,即:

my_ndarray = [[9, 2, 4], [4, 1, 6, 7], [8, 17]]
Run Code Online (Sandbox Code Playgroud)

所以我们可以注意到,my_list和my_ndarray都包含3个子列表,第一个子列表包含3个元素,第二个子列表包含4个,第3个子列表包含2个元素.

有一个巧妙的方法来做到这一点?

谢谢!

Joh*_*ooy 8

>>> it = iter([9, 2, 4, 4, 1, 6, 7, 8, 17])
>>> my_list = [[20, 15, 10], [15, 22, 37, 46], [22, 91]]
>>> [[next(it) for i in j] for j in my_list]
[[9, 2, 4], [4, 1, 6, 7], [8, 17]]
Run Code Online (Sandbox Code Playgroud)

  • 在对齐数据时,"创建迭代器然后再行走另一个数据结构,调用next(it)"模式非常有用.我不知道为什么它不受欢迎. (3认同)