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维数组)连接起来。您可能应该首先修复生成该列表的任何内容。。。