将numpy数组分配给预先初始化的变量

时间:2018-03-28 21:40:50

标签: python arrays numpy

我必须使这段代码有效。

mean = []

def func():
    mean = np.mean(a,axis=0);
print mean

但是在打印mean时,我得到了输出[]。如何将np.mean分配给mean? PS:我是numpy的初学者,所以我对变量赋值如何在这里工作很困惑。

2 个答案:

答案 0 :(得分:2)

mean内的func与外部的mean不同。在mean = ...内分配func时,您正在func本地范围中创建变量 - 此{{1 }}与全局范围中定义的外部mean完全不同。此外,具有相同名称的局部变量隐藏了全局变量,因此最终不会触及全局变量。

基本修复方法是在mean内将mean声明为global变量并使用func参数:

out

但是,为了维护代码,我建议使用mean = np.empty(...) def func(a): global mean np.mean(a, axis=0, out=mean) # you don't need the trailing semicolon either 变量,当你可以避免它时。而是将global作为参数传递给a并返回结果:

func

我推荐前一种方法的唯一事件是,它会更好地表现性能。然而,对于像计算均值这样简单的事情,为什么甚至首先声明一个函数?

答案 1 :(得分:1)

你应该从你的职能中return

def func():
    return np.mean(a,axis=0);

然后您可以指定返回值

mean = func()