用3填充3D列表中的缺失值以创建3D numpy数组

问题描述 投票:1回答:1

我有3D列表

ll = [
[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10,11,12]], [[6, 7, 8],[12, 13, 14]], [[10, 20, 30], [40, 50, 60], [70, 80, 90]]
]

我希望成为

ll = [[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10,11,12]], [[6, 7, 8],[12, 13, 14], [0, 0, 0], [0, 0, 0]], [[10, 20, 30], [40, 50, 60], [70, 80, 90], [0,0,0]]]

以便创建a1 = np.array(l1)

a1

array([
[[1,2,3], [4,5,6], [7,8,9], [10,11,12]]
[[6,7,8], [12,13,14], [0,0,0], [0,0,0]]
[[10, 20, 30], [40, 50, 60], [70, 80, 90], [0,0,0]]
])

我已经阅读了以下内容,但它们适用于2D,但我无法用于3D。

https://stackoverflow.com/a/38619333/5202279

https://stackoverflow.com/a/43149308/5202279

python itertools numpy-ndarray
1个回答
0
投票

迭代列表中的所有元素,这些元素也是列表并获得最大长度。然后将零添加到每个没有最大长度的“子列表”。

max = 0
for i in range(0, len(ll)):
    if len(ll[i]) > max:
        max = len(ll[i])

for i in range(0, len(ll)):
    while len(ll[i]) < max:
        ll[i].append([0, 0, 0])

© www.soinside.com 2019 - 2024. All rights reserved.