它應該去的東西沿着
In [1]: scores = np.array([[8,5,6,2], [9,4,1,4], [2,5,3,8]]); threshold = 1.1; scores
Out[1]:
array([[8, 5, 6, 2],
[9, 4, 1, 4],
[2, 5, 3, 8]])
In [2]: part = np.partition(scores, 2, axis=1); part
Out[2]:
array([[2, 5, 6, 8],
[1, 4, 4, 9],
[2, 3, 5, 8]])
In [3]: row_mask = (part[:,0] > threshold) & (part[:,0] <= 0.8 * part[:,1]); row_mask
Out[3]: array([ True, False, True], dtype=bool)
In [4]: rows = row_mask.nonzero()[0]; rows
Out[4]: array([0, 2])
In [5]: cols = np.argmin(scores[row_mask], axis=1); cols
Out[5]: array([3, 0])
線那一刻,如果你正在尋找的實際座標對,你可以zip
他們:
In [6]: coords = zip(rows, cols); coords
Out[6]: [(0, 3), (2, 0)]
或者,如果你打算看看這些元素,你可以直接使用它們:
In [7]: scores[rows, cols]
Out[7]: array([2, 2])
是不是進球數1)和3)相沖突? – JB333 2014-10-03 00:29:44
@ JB333也許這是一個技巧性的問題,答案是總是返回一個空數組(沒有任何循環)。 ;-) – Carsten 2014-10-03 00:56:21