pythonscript,初始化数组并存储每个迭代的值

2024-09-28 16:20:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我在python中初始化数组时遇到问题。我一直在努力寻找解决办法,但什么也没找到(可能是我搜索了错误的关键字)。 不管怎样,这就是我想要达到的目标: 我正在为机器视觉应用程序编写python脚本。应用程序由几个“工具”组成,这些工具按其顺序迭代运行。其中一个工具是我作为python脚本编写的。在这个脚本中,我需要创建一个数组类型变量,对于每个迭代,它将删除第一个值,并在末尾附加一个新值。因为它需要记住迭代之间的数组,所以它必须是全局的吗? 问题是我需要在脚本的开头将变量定义为数组。为此,我使用: xPosition\u数组=[] 在脚本的后面,我附加了一个值。但是,下一次迭代 xPosition\u数组=[] 将用空数组覆盖数组。 如何使代码只定义/初始化数组一次(第一次迭代)

提前谢谢

代码:

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)

Tags: 工具代码脚本应用程序len定义数组filter
2条回答

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

xPosition_array = []

def my_tool(xPosition_array):
    # do stuff

每次你想使用这个工具时,只需调用函数

我不太清楚你想在这里实现什么,所以希望这是有帮助的

您可以尝试以下方法初始化阵列:

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?以进一步检查变量

相关问题 更多 >