【发布时间】:2019-09-04 10:00:05
【问题描述】:
我有一个 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 元素 hm 元素 [[270.01 303.43] [310.17 306.37]] #倒数第二行 [[269.82 303.38] [310.99 306.86]] #最后一行 返回数组的形状是 (2,2) 并且是 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)。其他问题中提出的所有解决方案都不起作用([0][-1],[-1][0],您可以自己尝试找出)索引不起作用。那么有没有办法解决这个问题?请充分解释一下,因为我对此还是有点陌生!提前致谢!
补充:
取最后两个数据块
索引数组(在空闲时)获取(我复制了数组的最后两个块):[[293.51373 323.4329 ]
[247.77493 316.02783]]
[[292.9887 322.23425]
[247.24142 314.2921 ]]
在我的程序中,它显示为(相同的数组)
--wm 元素-----------------hm 元素[[293.51373 323.4329 ][247.77493 316.02783]] 我认为这是倒数第二行[[292.9887 322.23425][247.24142 314.2921 ]] 我认为这是最后一行
这给我带来了很多困惑,但直到现在我都忽略了它们显示方式的细微差别。现在,问题是如何索引 323.4329 和 293.51373 数字,如果可以单独索引它们会更好吗?
【问题讨论】:
-
arr[-1, 0]是最后一行,第一列,wm。arr[-2,1]是倒数第二行,第二列,hm。 -
你试过代码了吗?arr[-2,1] 显示为第二列,大概 wm 和 arr[-1,0] 的最后一行是第一列和最后一行嗯,这是什么令人困惑。出于这个原因,我需要帮助,甚至提供了代码,以便人们自己尝试并发现这个奇怪的异常。我尝试了 [x,y] 的每个索引组合,它要么给出轴为 1 的错误,要么索引不同的东西。这就是为什么我需要有人帮忙。如前所述,上述或之前提出的所有索引方法都不适用于倒数第二行的索引。
-
可能是轴为 1,所以我无法索引倒数第二行。附加元素不会添加新行,它只会更新当前值。所以,我尝试了不同的方法,但没有奏效。现在我在这里尝试看看如何使用不同的附加方法或索引方法来做到这一点。
-
你的数组是二维的,
wm值在第一列,hm值在第二列。arr[:0]获取所有wm值。arr[-1,:]获取最后附加的(wm,hm)对。
标签: python arrays numpy opencv indexing