我正在Numpy和faiss(Facebook kNN库(中编写一个k近邻分类器。对于积分分类,我收到:
[[ 9240 4189 8702]
[ 2639 1052 13565]
[10464 14220 13980]
...
[12014 12063 1331]
[ 6719 5832 8827]
[ 1793 5455 12328]]
每一行都是y
向量的索引。我需要在y
向量中引用这个矩阵的值,所以例如,我将用矩阵中的9240
交换y[9240]
值,例如1(正类(。
我能在没有Python循环的情况下做到这一点吗?也就是说,这只能用Numpy完成吗?
您可以使用索引数组对一维数组进行索引。结果与索引数组的形状相同。例如:
>>> a
array([[1, 2, 2],
[3, 3, 2]])
>>> y
array([ 1000., 1020., 1040., 1060.])
>>> y[a]
array([[ 1020., 1040., 1040.],
[ 1060., 1060., 1040.]])