首页 > 解决方案 > 查找numpy数组中两个值之间的差异

问题描述

我有一个 numpy 列表,由 (my_array=[] 启动,形状为 (0,)) 然后我将 wm 和 hm 元素附加到它上面,就像这样(r 是一个级联,格式为-[[300 240 22 22]]):

my_array=[]
for (x, y, w, h) in r:
    wm=int(x+ (w/2.))
    hm=int(y+ (h/2.))
    my_array.append([numpy.float32(wm), numpy.float32(hm)])
return numpy.array(my_array)

该代码产生:

wm element       the hm element
[[270.01 303.43] [310.17 306.37]] # second to last row
[[269.82 303.38] [310.99 306.86]] # the last row
the shape of the returned array is (2,2) and is dtype:float32

...

现在的问题是,当我尝试附加 303.43 时,理论上它会是 [-2][1] 但它索引 303.38。这很好,但我还需要索引 303.43。

我发现第一个 [] 索引 wm[0] 或 hm[1] 元素,然后第二个 [] 索引每个元素内的两列值之一
- 例如 [0][-1] 索引wm 元素 [0] 和最后一行 [-1] 我也想索引倒数第二行并尝试了 [0][-2] 但它没有按预期工作(它索引了 269.82)。

所以我尝试了 [0][1][-2] 但由于 IndexError: invalid index to scalar variable 它没有工作。

我要做的就是找到 wm 元素中 2 列的最后一行和倒数第二行之间的差异(因此在上面的示例中,它将是 269.82-270.1=-0.19 和 303.38-303.43=-0.05)。索引不起作用。那么有没有办法解决这个问题?

标签: pythonarraysnumpyindexingarray-difference

解决方案


我无法复制您的数组,但鉴于您的(非常复杂的)问题,我相信以下内容最终会满足您的要求:

这应该给你269.82-270.1=-0.19

my_array[0][-2]-my_array[0][0]

这应该给你303.38-303.43=-0.05

my_array[0][-1]-my_array[0][1]

一般来说,我相信你索引你的数组my_array如下:

               wm element                       the hm element
[[my_array[0][0]   my_array[0][1]]   [my_array[1][0] my_array[1][1]]] # second to last row
[[my_array[0][-2]  my_array[0][-1]]  [my_array[1][-2] my_array[1][-1]]] # the last row

在您的特定情况下,倒数第二个元素也是第三个元素,因此您可以将它们索引为my_array[0][2]而不是my_array[0][-2]my_array[1][2]而不是my_array[1][-2]


推荐阅读