Python 如何堆叠不均匀的numpy阵列?
如何从数组列表中的每个数组的相同索引中堆叠元素Python 如何堆叠不均匀的numpy阵列?,python,arrays,list,numpy,Python,Arrays,List,Numpy,如何从数组列表中的每个数组的相同索引中堆叠元素 arrays = [np.array([1,2,3,4,5]), np.array([6,7,8,9]), np.array([11,22,33,44,55]), np.array([2,4])] output = [[1,6,11,2], [2,7,22,4], [3,8,33], [4,9,44], [5
arrays = [np.array([1,2,3,4,5]),
np.array([6,7,8,9]),
np.array([11,22,33,44,55]),
np.array([2,4])]
output = [[1,6,11,2],
[2,7,22,4],
[3,8,33],
[4,9,44],
[5,55]]
数组
是长度不均匀的数组列表。输出
有第一个数组(不介意它也是一个列表),其中包含每个数组中所有可能的索引0。输出中的下一个数组包含所有可能的索引1,依此类推
我能找到的最接近的东西(但需要相同的形状数组)是:
谢谢。您可以先将其包装在数据帧中:
arr = pd.DataFrame(arrays).values.T
输出:
array([[ 1., 6., 11., 2.],
[ 2., 7., 22., 4.],
[ 3., 8., 33., nan],
[ 4., 9., 44., nan],
[ 5., nan, 55., nan]])
[array([ 1, 6, 11, 2]),
array([ 2, 7, 22, 4]),
array([ 3., 8., 33.]),
array([ 4., 9., 44.]),
array([ 5., 55.])]
如果您真的想要不同尺寸的,请选择:
arr = [x.dropna().values for _, x in pd.DataFrame(arrays).iteritems()]
输出:
array([[ 1., 6., 11., 2.],
[ 2., 7., 22., 4.],
[ 3., 8., 33., nan],
[ 4., 9., 44., nan],
[ 5., nan, 55., nan]])
[array([ 1, 6, 11, 2]),
array([ 2, 7, 22, 4]),
array([ 3., 8., 33.]),
array([ 4., 9., 44.]),
array([ 5., 55.])]
这让你接近了。您不能真正拥有示例输出中所示的2D稀疏数组
import numpy as np
arrays = [np.array([1,2,3,4,5]),
np.array([6,7,8,9]),
np.array([11,22,33,44,55]),
np.array([2,4])]
maxx = max(x.shape[0] for x in arrays)
for x in arrays:
x.resize(maxx,refcheck=False)
output = np.stack(arrays, axis=1)
print(output)
通常,组合形状不规则的阵列表明numpy不是合适的工具。这是干什么用的?