Python:遍历列表并只打印出数组变量?

Python:遍历列表并只打印出数组变量?,python,arrays,python-3.x,list,Python,Arrays,Python 3.x,List,我有以下示例数据和列表: data.var1 = np.array([1, 2, 3]) data.var2 = 30 data.var3 = 10 allvariables = [data.var1, data.var2, data.var3] 其中任何一个变量都可以是一个数组,也可以只是一个数字。(上面的数据只是一个示例)我想遍历allvariables列表,并将所有数组添加到一个新列表中 这就是我迄今为止所尝试的: arrayvariables = [vname for vname, i

我有以下示例数据和列表:

data.var1 = np.array([1, 2, 3])
data.var2 = 30
data.var3 = 10
allvariables = [data.var1, data.var2, data.var3]
其中任何一个变量都可以是一个数组,也可以只是一个数字。(上面的数据只是一个示例)我想遍历allvariables列表,并将所有数组添加到一个新列表中

这就是我迄今为止所尝试的:

arrayvariables = [vname for vname, i in vars(data).items() if isinstance(i, np.ndarray)]
但这会将变量名作为字符串添加到arrayvariables列表中。(例如: “var1”)

我也试过了

arrayvariables = [vars(data).get(vname) for vname in allvariables if isinstance(vars(data).get(vname), np.ndarray)]
但这只是将数组值添加到列表中。(例如:数组([1,2,3]))

我希望arrayvariables列表与以下代码创建的列表相同(假设data.var1是唯一的数组):

我对Python相当陌生,所以我可能只是错过了一些显而易见的东西


谢谢

您的意思是说您有一个包含大量变量的列表,并且您想在其中循环并打印出作为数组的变量吗?此代码可能对您有所帮助

list_to_check = [1, 2, 5, ['another', 'list'], 10, 20]
for i in list_to_check:
    if type(i) == list: # Check if that element is a list
        print(i)

让我们定义一个数组是一个非空形状的对象

import numpy as np


a = [
    np.array(1),  # shape: ()
    np.arange(5), # shape: (5,)
    np.int(100),  # shape: ()
    np.arange(0.5, 5.5), # shape: (5,)
    5, # shape: ()
]

print(a)

r = [s for s in a if np.shape(s)]

print(r)

输出:

[array(1), array([0, 1, 2, 3, 4]), 100, array([0.5, 1.5, 2.5, 3.5, 4.5]), 5]
[array([0, 1, 2, 3, 4]), array([0.5, 1.5, 2.5, 3.5, 4.5])]
由于您已将变量放入
allvariables
,因此从
data
访问这些变量不需要
vars(data)
。只需使用以下命令即可从
allvariables

array_variables = [s for s in allvariables if np.shape(s)]
如果要从
data
的属性中提取所有数组,
vars(data)
给出这些属性的dict

array_variables = [s for s in vars(data).values() if np.shape(s)]

你似乎快找到答案了。我相信你要找的是:

将numpy导入为np
类别数据:
有吗
有吗
有吗
data.var1=np.array([1,2,3])
data.var2=30
data.var3=10
allvariables=[data.var1,data.var2,data.var3]
arrayvars=[k的v.tolist(),变量中的v(数据).items()如果存在(v,np.ndarray)]
打印(arrayvars)

任何输入和输出都很好。当然,如果我从第二行代码打印arrayvariables列表,它会导致
['var1']
从第三行打印arrayvariables列表会导致
[array([1,2,3])]
我已经用示例变量值编辑了主要帖子。不幸的是,我的数组数据位于NumPy数组中,因此代码无法工作,因为变量类型不是列表。
array_variables = [s for s in vars(data).values() if np.shape(s)]