将 变长 列表的Python序列隐式转换为NumPy数组会导致该数组属于 object 类型。
v = [[1], [1, 2]] np.array(v) >>> array([[1], [1, 2]], dtype=object)
尝试强制使用其他类型将导致异常:
np.array(v, dtype=np.int32) ValueError: setting an array element with a sequence.
通过使用给定的占位符填充“缺失”值来获取类型为int32的密集NumPy数组的最有效方法是什么?
从我的示例序列中v,如果占位符为0,我想得到类似的结果
v
array([[1, 0], [1, 2]], dtype=int32)
您可以使用itertools.zip_longest:
import itertools np.array(list(itertools.zip_longest(*v, fillvalue=0))).T Out: array([[1, 0], [1, 2]])
注意:对于Python 2,它是itertools.izip_longest。