Python 2.7 对循环内部的数组求和,并在函数外部调用它

Python 2.7 对循环内部的数组求和,并在函数外部调用它,python-2.7,numpy,Python 2.7,Numpy,我试图对一个已由循环填充的数组求和,但我只能调用数组中的最后一个值 def nots: global smhx tilt, lfo = genfromtxt('reso.csv', unpack=True, delimiter=',') for t in xrange(2,5200): mrt=max(tilt[0:t]) x= 1-((lfo[t-1]-lfo[0])/(mrt-lfo[0])) re

我试图对一个已由循环填充的数组求和,但我只能调用数组中的最后一个值

def nots:

global smhx

tilt, lfo = genfromtxt('reso.csv',
        unpack=True, 
        delimiter=',')


for t in xrange(2,5200):

        mrt=max(tilt[0:t])

        x= 1-((lfo[t-1]-lfo[0])/(mrt-lfo[0]))

        results=np.array([x])

        smhx=np.sum(results)



    print smhx/5200

如果不将数组保存到另一个文件,然后在函数外部调用它,有人能建议正确的方法吗

你的问题不是很清楚,但我正在回答标题中的问题:

要在函数外部调用值,请使用global或将其作为参数传入:

使用全球:

传递:

>>> var = 8
>>> def foo(var):
...     var+=1
...     return var
...
>>> var
8
>>> for k in range(3):
...     var = foo(var)
...
>>> var
11
在您的代码中,一切都很好;您已设置为使用全局。要从另一个函数调用该变量,只需调用:

def foo():
    global smhx
    #Do whatever you want with smhx
    smhx+=500

smhx仅成为一个值。该值是5200条记录数组中的最后一个值,而不是它们的总和。我理解全局变量,但我不明白为什么我只得到数组中的最后一个值,而不是5200条记录的总和。现在当我尝试将其写入CSV时,它是用中文写入的吗?
def foo():
    global smhx
    #Do whatever you want with smhx
    smhx+=500