如何索引倒数第二个附加行?Numpy 和 Python

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


我已经尝试了几乎所有可能的索引组合,试图索引倒数第二个附加行,都返回最后一行或错误。这些是我尝试过的一些方法(在这些方法中切换数字):[-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 element------------------hm element

[[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) . 所有各种索引方法都没有获取倒数第二行,只是最后一行。请让我知道是否有不同的方法以不同的方式索引倒数第二行,或者是否有其他索引方法。对不起,如果它仍然习惯这一点令人困惑。我可以尝试消除任何混乱。提前致谢!


HUWWW
浏览 324回答 2
2回答

扬帆大鱼

这两个显示器是同一个东西,一个(2,2)形状阵列。[[293.51373 323.4329 ] [247.77493 316.02783]][[293.51373 323.4329 ][247.77493 316.02783]]它是标记数组结构的括号[],而不是换行符。

红颜莎娜

我认为您正在寻找的答案是:Arr[-2::2]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go