numpy 在Python中使用Nan从不同大小的列表中创建数组并填充空白[replicate]

jk9hmnmh  于 2023-03-18  发布在  Python
关注(0)|答案(1)|浏览(144)

此问题在此处已有答案

Convert Python sequence to NumPy array, filling missing values(8个答案)
Convert list of lists with different lengths to a numpy array [duplicate](3个答案)
昨天关门了。
假设我有一个列表的列表,它们可以有不同的大小:

arr=list([[0. , 1.5, 3. , 0. , 1.5],[0. , 1.5, 3. ],[0., 1.33, 2.67, 4. ]])

我想让这个数组numpy兼容,并根据最大长度创建一个填充数组,然后用Nan填充空白:

arr_filled=list([[0. , 1.5, 3. , 0. , 1.5],[0. , 1.5, 3.,None,None ],[0., 1.33, 2.67, 4.,None ]])

我目前的方法是用map(len, arr)来计算每个列表的长度,然后循环遍历列表并添加None,直到它们的大小都相同,有没有更快更干净的方法来做到这一点?

zbdgwd5y

zbdgwd5y1#

您可以使用itertools.zip_longest

from itertools import zip_longest

arr = [[0.0, 1.5, 3.0, 0.0, 1.5], [0.0, 1.5, 3.0], [0.0, 1.33, 2.67, 4.0]]

arr_filled = [list(tpl) for tpl in zip(*zip_longest(*arr))]
print(arr_filled)

图纸:

[[0.0, 1.5, 3.0, 0.0, 1.5], [0.0, 1.5, 3.0, None, None], [0.0, 1.33, 2.67, 4.0, None]]

相关问题