You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Numpy从不规则长度列表创建带默认值的二维数组?

简洁实现不同长度列表转补全默认值的二维数组

嘿,我来给你分享几个更简洁的实现方案,比你现在写的繁琐代码清爽太多啦!针对你要把不同长度的列表转成补全默认值的二维数组需求,这里有几种实用的方法:

方法一:用Numpy的pad函数直接填充

先找出所有列表的最大长度,再对每个列表进行尾部填充,缺的位置补默认值,一步到位:

import numpy as np

a = [1,2,3]
b = [4,5]
DEFAULT_VALUE = 0  # 替换成你需要的默认值

max_len = max(len(a), len(b))
# 对每个列表填充至max_len长度,不足部分补DEFAULT_VALUE
c = np.array([
    np.pad(arr, (0, max_len - len(arr)), mode='constant', constant_values=DEFAULT_VALUE)
    for arr in [a, b]
])

print(c)
# 输出:array([[1, 2, 3], [4, 5, 0]])

方法二:用itertools.zip_longest配对补全

这个方法适合处理任意数量的可迭代对象,通过配对补全后转置得到目标数组:

import numpy as np
from itertools import zip_longest

a = [1,2,3]
b = [4,5]
DEFAULT_VALUE = 0

# zip_longest会按最长的迭代器配对,缺值补DEFAULT_VALUE,转置后得到二维数组
c = np.array(list(zip_longest(a, b, fillvalue=DEFAULT_VALUE))).T

print(c)
# 输出:array([[1, 2, 3], [4, 5, 0]])

方法三:纯列表推导式补全后转数组

如果不想用额外的工具函数,用基础的列表操作就能完成,可读性拉满:

import numpy as np

a = [1,2,3]
b = [4,5]
DEFAULT_VALUE = 0

max_len = max(len(a), len(b))
# 给每个列表补全默认值到max_len长度
padded_lists = [lst + [DEFAULT_VALUE] * (max_len - len(lst)) for lst in [a, b]]
c = np.array(padded_lists)

print(c)
# 输出:array([[1, 2, 3], [4, 5, 0]])

这几种方法都比你原来的代码简洁很多,你可以根据自己的使用场景选最顺手的~

内容的提问来源于stack exchange,提问作者Hans Wurst

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:41:18