创建一个numpy数组并在每次迭代中更新它的值

时间:2018-06-17 15:19:06

标签: python arrays csv numpy

我正在使用视频处理工具,需要将每帧的处理数据输入到数组中。

for p in det.read(frame, fac):  

    point_values = np.array([])

    for j, (x, y) in enumerate(p):  #iteration through points
        point_values = np.append(point_values,y)
        point_values = np.append(point_values,x)

此代码每帧再次运行。我期待“point_values = np.array([])”来重置数组,然后再次开始填充它。

我不确定我的逻辑是错误还是语法问题。

1 个答案:

答案 0 :(得分:0)

您的代码确实:

In [77]: p = [(0,0),(0,2),(1,0),(1,2)]
In [78]: arr = np.array([])
In [79]: for j,(x,y) in enumerate(p):
    ...:     arr = np.append(arr,y)
    ...:     arr = np.append(arr,x)
    ...:     
In [80]: arr
Out[80]: array([0., 0., 2., 0., 0., 1., 2., 1.])

没有语法错误。等效列表更快更清洁:

In [85]: alist =[]
In [86]: for x,y in p: alist.extend((y,x))
In [87]: alist
Out[87]: [0, 0, 2, 0, 0, 1, 2, 1]

但是你没有说明这个动作应该如何适应更大的背景。您为每个point_values创建了一个新的p,但之后却不做任何事情。