[英]Can I apply a function to the variable in a for loop definition (Python)
[英]How can i loop function variable in python?
这是我目前的代码:
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: cannot perform reduce with flexible type
我想要这个结果。
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 Array
,这对于使用行轴的计算方法来说会更容易。
我的意思是,而不是这个:
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)
这将在各自的指数中得到你的mean0, mean1, mean2, mean3
。
通过名称调用变量是一种反模式。 如果您需要对多个对象执行任务,您可以构造这些对象的集合(元组,列表等)。 例如:
all_vecs = [vec0, vec1, vec2, vec3]
此外,您现在可以通过指定axis
参数轻松地使用numpy 批量处理平均值:
all_means = np.mean(all_vecs,axis=1)
然后:
>>> all_means
array([ 2., 3., 4., 5.])
您可以通过更改:
globals()['mean%s' % k] = np.mean('vec'+str(k))
至
globals()['mean%s' % k] = np.mean(globals()['vec%s' % k])
但我强烈建议使用矢量:
all_vec = [vec0, vec1, vec2, vec3]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.