我有一个2D numpy数组,我试图找到对应于每行中最小元素的索引。我的代码如下所示:
dist=np.array([[0.15, 0.07, 0.14, 0.17, 0.15],
[0.16, 0.07, 0.14, 0.19, 0.15],
[0.10, 0. , 0.10, 0.14, 0.09],
[0.07, 0. , 0.06, 0.05, 0.14],
[0.10, 0.10, 0. , 0.17, 0.06],
[0.08, 0.10, 0.07, 0.15, 0.03],
[0.05, 0.09, 0.06, 0.13, 0. ],
[0. , 0.10, 0.10, 0.07, 0.05],
[0.06, 0.14, 0.16, 0.02, 0.11],
[0.07, 0.14, 0.17, 0. , 0.13]])
x= dist.min(axis=1)
print x
idx= np.where(dist==x)
print idx
print a[idx]
我得到以下输出
[0.07 0.07 0. 0. 0. 0.03 0. 0. 0.02 0. ]
(array([], dtype=int64),)
[]
/Library/Python/2.7/site-packages/ipykernel_launcher.py:13: DeprecationWarning: elementwise == comparison failed; this will raise an error in the future.
del sys.path[0]
由于某种原因,索引值为空,我也收到警告/错误?相反,我想要检索的索引是(0,1),(1,1),(2,1)等等,对应于每行中的最小元素。
答案 0 :(得分:0)
使用min_indices = np.argmin(dist, axis=1)
min_tuples = [(row, col) for row, col in enumerate(min_indices)]
# outputs: array([1, 1, 1, 1, 2, 4, 4, 0, 3, 3])
# [(0, 1),
(1, 1),
(2, 1),
(3, 1),
(4, 2),
(5, 4),
(6, 4),
(7, 0),
(8, 3),
(9, 3)]
查找索引:
np.min??
FWIW,可以通过ipython
shell中的set
访问此信息。