繁体   English   中英

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

[英]How to index the second-to-last appended row? Numpy and 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元素------------------ 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) 。 所有各种索引方法都没有获取最后一行的倒数第二行。 如果有不同的方法以不同的方式索引倒数第二行或者有其他索引方法,请告诉我。 对不起,如果它仍然混淆仍然习惯这个。 我可以尝试解决任何困惑。 提前致谢!

我认为你要找的答案是:

Arr[-2::2]

这两个显示器是相同的,一个(2,2)形状的阵列。

[[293.51373 323.4329 ]
 [247.77493 316.02783]]

[[293.51373 323.4329 ][247.77493 316.02783]]

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM