如何通过在每个子列表上添加 np.nan 来使我的所有子列表具有相同的长度(最长子列表的长度)?
import random
[list(range(0,random.randint(1,5))) for x in range(n)]
所以如果输出是:
[[0, 1], [0], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3]]
它应该是这样的:
[[nan,nan,nan,0, 1], [nan,nan,nan,nan,0], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [nan,0, 1, 2, 3]]
最佳答案
首先,使用max()
找到最长子列表的长度。然后,对于每个子列表,使用切片赋值将该列表的内容替换为正确数量的 NaN
,后跟原始列表。
import random, math
n = 5
lists = [list(range(0,random.randint(1,5))) for x in range(n)]
# get the maximum length
maxlen = len(max(lists, key=len))
# pad left of each sublist with NaN to make it as long as the longest
for sublist in lists:
sublist[:] = [math.nan] * (maxlen - len(sublist)) + sublist
关于python - 通过添加 nan 使所有子列表长度相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53400016/