pythonscript,初始化每次迭代的数组和存储值

时间:2017-03-25 16:56:18

标签: python arrays

我在python中初始化数组时遇到问题。我一直试图寻找解决方案,但我没有找到任何东西。 (可能是我搜索了错误的关键字)。 无论如何,这正是我想要实现的目标: 我正在为机器视觉应用程序编写一个python脚本。该应用程序由几个“工具”组成,这些“工具”按其有序顺序迭代运行。我作为python脚本编写的这些工具之一。在这个脚本中,我需要创建一个数组类型变量,每次迭代都会删除第一个值,并在最后添加一个新值。因为它需要记住迭代之间的数组,它必须是全局的吗? 问题是我需要在脚本开头将变量定义为数组。为此,我使用: xPosition_array = [] 稍后在脚本中,我追加一个值。但是,下一次迭代 xPosition_array = [] 将用空的数据覆盖该数组。 如何创建代码使得数组只定义/初始化一次(第一次迭代)?

提前致谢。

代码:

global xPosition_array
xPosition_array = []
filter_win_len = 40

def moving_average(a, n) :
    ret = np.cumsum(a, dtype=float)
    ret[n:] = ret[n:] - ret[:-n]
    return ret[n - 1:] / n

xPosition = GetValue('LocatexPos.Line[1]_q_x')

if len(xPosition_array) < filter_win_len:
 xPosition_array.append(xPosition)
elif len(xPosition_array) == filter_win_len:
 xPosition_array.pop(0)
 xPosition_array.append(xPosition)

xPosition_filtered = moving_average(xPosition_array, filter_win_len)

2 个答案:

答案 0 :(得分:0)

如果在函数中编写整个工具,可以调用该函数并将数组作为参数传递。

^)

每次要使用该工具时,只需调用该函数即可。

我不确定你在这里想要达到的目标,所以希望这会有所帮助。

答案 1 :(得分:0)

你可以尝试这个来初始化数组:

global xPosition_array

if 'xPosition_array' in globals():
   pass
else:
    xPosition_array=[]

然后,当您进行进一步的迭代时,您将获得以下内容:

global xPosition_array

#First Iteration: 

if 'xPosition_array' in globals():
   pass
else:
    xPosition_array=[]

print("First Iteration: ", xPosition_array)

#Set Variable after First Iteration:
xPosition_array=[0,1,2]

#Second Iteration:

if 'xPosition_array' in globals():
   pass
else:
    xPosition_array=[]

print("Second Iteration: ", xPosition_array)

输出:

First Iteration:  []
Second Iteration:  [0, 1, 2]

然后,只有在尚未定义时才应将其设置为空数组。假设您的主函数仍然可以xPosition_array迭代地调用您的工具。请参阅此答案:How do I check if a variable exists?以进一步检查变量。