如何从不同长度的(1D-)数组中优雅地创建NumPy ndarray
,填充余数?
阵列总是1D,它们具有不同的长度(最大长度在20到100之间变化)。
说有
a = range(40)
b = range(30)
结果ndarray
应为
X = [[0,1,2,3,...,39,40],
[0,1,2,...29,30,0,0,...,0]]
创建中介
I = [a,b]
并通过
填充到maximum
I[1].extend([0] * (maximum - len(I[1])))
然后可以通过
转换X = np.array(I)
有效,但没有内置/可通过PyPI /更多pythonic?
答案 0 :(得分:1)
您可以创建一个零(np.zeros
)数组,然后用a
和b
替换行。不确定这比你的方式更好
In [27]: a=range(40)
In [28]: b=range(30)
In [29]: x=np.zeros((2,max(len(a),len(b))))
In [30]: for i,j in enumerate([a,b]): x[i][:len(j)]=j
In [31]: x
Out[31]:
array([[ 0., 1., 2., 3., 4., 5., 6., 7., 8., 9., 10.,
11., 12., 13., 14., 15., 16., 17., 18., 19., 20., 21.,
22., 23., 24., 25., 26., 27., 28., 29., 30., 31., 32.,
33., 34., 35., 36., 37., 38., 39.],
[ 0., 1., 2., 3., 4., 5., 6., 7., 8., 9., 10.,
11., 12., 13., 14., 15., 16., 17., 18., 19., 20., 21.,
22., 23., 24., 25., 26., 27., 28., 29., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0.]])