如何将numpy数组赋值给预初始化变量?函数内赋值问题求助
这是个很典型的Python变量作用域问题,刚接触的时候确实容易懵,我来给你掰扯清楚~
你在函数外面定义的mean = []是全局变量,但当你在func()里写mean = np.mean(...)的时候,Python会默认把这个mean当成函数内部的局部变量——相当于在函数里新创建了一个叫mean的变量,和外面那个全局的mean完全是两回事。所以函数执行完,外面的mean还是原来的空列表。
下面给你两种可行的解决方法:
方案1:用global关键字声明使用全局变量
如果就是想直接修改外面的全局mean,可以在函数开头用global关键字告诉Python:“我要使用的是外面那个全局的mean,不是新创建局部变量”。代码改成这样:
import numpy as np mean = [] def func(): global mean # 关键:声明这个mean是全局变量 mean = np.mean(a, axis=0) print(mean) # 先定义你的数组a(比如示例数据) a = np.array([[1, 2], [3, 4]]) func() print(mean) # 现在就能打印出计算后的均值啦!
方案2:让函数返回结果,外部赋值(更推荐)
其实在Python里,尽量少用全局变量会让代码更清晰,不容易出奇怪的bug。更规范的做法是让函数把计算结果返回,然后你在外面把返回值赋值给mean:
import numpy as np mean = [] def func(): calc_mean = np.mean(a, axis=0) print(calc_mean) return calc_mean # 返回计算好的均值 a = np.array([[1, 2], [3, 4]]) mean = func() # 把函数返回的结果赋值给全局的mean print(mean) # 同样能得到正确结果
额外提醒
别忘了确保你的a是numpy数组哦!如果a是普通的Python列表,得先转成numpy数组,比如a = np.array([[1,2],[3,4]]),不然np.mean可能会报错或者不符合你的预期~
内容的提问来源于stack exchange,提问作者yobro97
相关产品推荐
相关产品推荐

