首页 > 解决方案 > 不能用 numpy 展平数组

问题描述

我有一个输出如下:

data = [array([1.        , 1.14112001, 0.7205845 , 1.41211849, 0.46342708,
        1.65028784, 0.24901275]),
 array([1.83665564, 0.09442164, 1.95637593, 0.01196838, 1.99991186,
        0.00822115, 1.96379539]),
 array([0.08347845, 1.85090352, 0.23174534, 1.67022918, 0.44121095,
        1.43616476])]

那是 3 个数组的列表。我必须展平阵列。这应该很简单,data.flatten("F") 但它不起作用

输出应包含每个数组的第一个元素,然后是第二个元素,依此类推。

比如:1,1.83665564,1.14112001,0.09442164,1.85090352等等。我怎样才能做到这一点

更新 :

我用给定代码得到的输出如下

array([array([1.        , 1.14112001, 0.7205845 , 1.41211849, 0.46342708,
       1.65028784, 0.24901275]),
       array([1.83665564, 0.09442164, 1.95637593, 0.01196838, 1.99991186,
       0.00822115, 1.96379539]),
       array([0.08347845, 1.85090352, 0.23174534, 1.67022918, 0.44121095,
       1.43616476])], dtype=object)

标签: pythonarraysnumpy

解决方案


from numpy import array
data = [array([1.        , 1.14112001, 0.7205845 , 1.41211849, 0.46342708,
        1.65028784, 0.24901275]),
 array([1.83665564, 0.09442164, 1.95637593, 0.01196838, 1.99991186,
        0.00822115, 1.96379539]),
 array([0.08347845, 1.85090352, 0.23174534, 1.67022918, 0.44121095,
        1.43616476])]
max=len(max(data,key=len))
final_list=[]
for index in range (0,max):
        final_list.extend([a[index] for a in data if len(a)>index])
print(final_list)

输出:

[1.0, 1.83665564, 0.08347845, 1.14112001, 0.09442164, 1.85090352, 0.7205845, 1.95637593, 0.23174534, 1.41211849, 0.01196838, 1.67022918, 0.46342708, 1.99991186, 0.44121095, 1.65028784, 0.00822115, 1.43616476, 0.24901275, 1.96379539]

推荐阅读