如何在python中循环函数变量?

如何在python中循环函数变量?,python,python-3.x,function,loops,numpy,Python,Python 3.x,Function,Loops,Numpy,这是我当前的代码: import numpy as np vec0 = [1, 2, 3] vec1 = [2, 3, 4] vec2 = [3, 4, 5] vec3 = [4, 5, 6] for k in range(0, 4): globals()['mean%s' % k] = np.mean('vec'+str(k)) 我得到了这个错误: TypeError:无法使用灵活的类型执行reduce操作 我想知道这个结果 mean0 = np.mean(vec0) mean

这是我当前的代码:

import numpy as np

vec0 = [1, 2, 3]
vec1 = [2, 3, 4]
vec2 = [3, 4, 5]
vec3 = [4, 5, 6]

for k in range(0, 4):
    globals()['mean%s' % k] = np.mean('vec'+str(k))
我得到了这个错误:

TypeError:无法使用灵活的类型执行reduce操作


我想知道这个结果

mean0 = np.mean(vec0)
mean1 = np.mean(vec1)
mean2 = np.mean(vec2)
mean3 = np.mean(vec3)
您可以这样做:

vecs = [vec0, vec1, vec2, vec3]
然后:

globals()['mean%s' % k] = np.mean(vecs[k])
尽管如此,您应该避免这种方法,而是维护一个
2D数组
,这将更容易使用行轴进行计算

我的意思不是说:

vec0 = [1, 2, 3]
vec1 = [2, 3, 4]
vec2 = [3, 4, 5]
vec3 = [4, 5, 6]
你可以有这样的东西:

vecs = np.array([[1, 2, 3], [2, 3, 4], [3, 4, 5], [4, 5, 6]])
然后你可以简单地计算如下的平均值:

meansArray = vecs.mean(axis=1)

这将在相应的索引处显示您的
平均值0、平均值1、平均值2、平均值3。

按名称调用变量是一种反模式。如果需要对多个对象执行任务,可以构造这些对象的集合(元组、列表等)。例如:

all_vecs = [vec0, vec1, vec2, vec3]
此外,通过指定
参数,您现在可以轻松地使用numpy批量处理平均值:

all_means = np.mean(all_vecs,axis=1)
然后:


您可以通过更改以下内容来执行此操作:

globals()['mean%s' % k] = np.mean('vec'+str(k))

但我强烈建议使用向量:

all_vec = [vec0, vec1, vec2, vec3]

1) 你不想创建动态命名的变量,2)如果你正确地使用numpy,你可以把它做成一个二维数组,并在行轴上取平均值……这实际上是一种反模式,通常按名称调用变量是不好的设计。
globals()['mean%s' % k] = np.mean(globals()['vec%s' % k])
all_vec = [vec0, vec1, vec2, vec3]