Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何堆叠不均匀的numpy阵列?_Python_Arrays_List_Numpy - Fatal编程技术网

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不是合适的工具。这是干什么用的?