我有以下numpy数组:
boxIDx = 3
index = np.array([boxIDs!=boxIDx]).reshape(-1,1)
print('\nbboxes:\t\n', bboxes)
print('\nboxIDs:\t\n', boxIDs)
print('\nIndex:\t\n', index)
输出结果为:
bboxes:
[[370 205 40 40]
[200 100 40 40]
[ 30 50 40 40]]
boxIDs:
[[1]
[2]
[3]]
Index:
[[ True]
[ True]
[False]]
问题:如何使用我的索引来删除'第三行(bbox)?
我试过了:
bboxes = bboxes[index,:]
以及:
bboxes = bboxes[boxIDs!=boxIDx,:]
这两个都给我以下错误:
IndexError: too many indices for array
对不起,如果这是愚蠢的 - 但我在这里遇到了麻烦:/
答案 0 :(得分:2)
发生错误是因为您正在尝试传递矢量而不是索引数组。您可以对reshape(-1)
使用reshape(3)
或index
:
In [56]: bboxes[index.reshape(-1),:]
Out[56]:
array([[370, 205, 40, 40],
[200, 100, 40, 40]])
In [57]: bboxes[index.reshape(3),:]
Out[57]:
array([[370, 205, 40, 40],
[200, 100, 40, 40]])
In [58]: index.reshape(-1)
Out[58]: array([ True, True, False], dtype=bool)
In [59]: index.reshape(-1).shape
Out[59]: (3,)
答案 1 :(得分:1)
由于Index
是二维的,你必须摆脱额外的维度,所以
no_third = bboxes[Index[:,0]]
# array([[370, 205, 40, 40],
# [200, 100, 40, 40]])