如何索引倒数第二行? numpy和python

时间:2019-04-21 22:04:19

标签: python arrays numpy indexing rows

我已经为此困惑了很长时间。如何索引倒数第二行?

我几乎尝试了所有可能的索引组合,试图对倒数第二行追加索引,所有索引都返回最后一行或错误。这些是我尝试过的一些方法(在这些方法中切换数字):[-1] [0],arr [-1、0],arr [-2,1],arr [-2 、: ]等。我使用的循环如下。

r= is an array formatted like so [[300 240 22 22]] 

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

这产生 索引数组(在空闲状态)获取(我复制了数组的最后两个块):

[[293.51373 323.4329 ]
  [247.77493 316.02783]]

[[292.9887  322.23425]
 [247.24142 314.2921 ]]

the shape of the returned array is (2,2) and is dtype:float32

在我的程序中,它显示为(同一数组)
--wm元素------------------ hm元素
[[293.51373 323.4329 ][247.77493 316.02783]]我认为这是倒数第二行
[[292.9887 322.23425][247.24142 314.2921 ]],我认为这是最后一行

这给我带来了一些困惑,因为它们的显示有所不同(空闲的显示数组是2行,而另一行的显示它是一条直线)

这些是索引方法的一些示例(以及数组)(这是数组中的最后两个连续行):

arr [[255.44836 280.92575] # i want to index this line
 [298.6107  285.75986]]
arr[-1] [298.6107  285.75986]
arr[-2] [255.44836 280.92575]
arr[-2][0] 255.44836
arr[:,0] [255.44836 298.6107 ]
arr[-1,:] [298.6107  285.75986]
arr[-2,0] 255.44836

arr [[255.35194 281.08353] # along with this line
 [298.45673 285.88693]]
arr[-1] [298.45673 285.88693]
arr[-2] [255.35194 281.08353]
arr[-2][0] 255.35194
arr[:,0] [255.35194 298.45673]
arr[-1,:] [298.45673 285.88693]
arr[-2,0] 255.35194  

其他时候,当我尝试索引倒数第二行时,它向我显示了轴错误,这可能是问题所在(附加操作未添加新行,这是我要索引的内容,而是覆盖了旧行值)。我不知道。所以我尝试用:concatenate,vstack,pandas切换追加方法。但这没有帮助。
我要做的就是找到wm元素中第二列的最后一行与倒数第二行之间的差异(在示例280.92575-281.08353中),并且与wm元素的第一列相同(255.44836-255.35194) 。所有各种索引方法都没有获取倒数第二行,而仅获取了最后一行。请让我知道是否有其他方法可以以不同的方式对倒数第二行进行索引,或者是否还有其他索引方法。很抱歉,如果仍然对此感到迷惑。我可以尝试消除任何混乱。预先感谢!

2 个答案:

答案 0 :(得分:0)

我认为您正在寻找的答案是:

Arr[-2::2]

答案 1 :(得分:0)

这两个显示是同一件事,一个(2,2)形状数组。

[[293.51373 323.4329 ]
 [247.77493 316.02783]]

[[293.51373 323.4329 ][247.77493 316.02783]]

标记数组结构的是括号[],而不是换行符。