Python 删除具有不同维度的列表中的零

Python 删除具有不同维度的列表中的零,python,arrays,list,numpy,multidimensional-array,Python,Arrays,List,Numpy,Multidimensional Array,不知怎的,我想出了一个不同维度的列表,包含零和非零,我如何删除零,并得到一个包含非零的列表而不改变顺序?说吧,我有 a=[array([0.]), array([ 0. , 1]), array([ 0. , 0. , 19]), array([ 0. , 0. , 5, 4]), 5, 100, 16, 7, 7, 7, 9, 1, 9] 我想要 [1,19,5,4,5,100,16,7,7,7,9,1,9] 我试过

不知怎的,我想出了一个不同维度的列表,包含零和非零,我如何删除零,并得到一个包含非零的列表而不改变顺序?说吧,我有

a=[array([0.]), array([ 0.        , 1]), array([ 0.        ,  0.        , 19]), array([ 0.        ,  0.        , 5, 4]), 5, 100, 16, 7, 7, 7, 9, 1, 9]
我想要

[1,19,5,4,5,100,16,7,7,7,9,1,9]
我试过了

np.concatenate(a).tolist()
但它告诉我们

all the input arrays must have same number of dimensions

有人能帮忙吗?谢谢。

不确定是否可以在没有某种循环的情况下完成:

arr = np.concatenate([i if isinstance(i, np.ndarray) else [i] for i in a])                                                                                                                                                           
arr[arr != 0].astype(int).tolist()
输出:

[1, 19, 5, 4, 5, 100, 16, 7, 7, 7, 9, 1, 9]
或者,如果可以使用
熊猫

from pandas.core.common import flatten                                                                                                                                                                                          

out = [int(i) for i in flatten(a) if i]                                                                                                                                                                                                   

您的数组具有相同的维度(它们都是一维的)。问题是您试图将它们与纯整数(功能上为0维数组)连接起来。您可能应该首先修复生成该列表的任何内容。。。