我有以下 NumPy 矩陣:
m = np.array([[1, 2, 3, 4],
[10, 5, 3, 4],
[12, 8, 1, 2],
[7, 0, 2, 4]])
現在,我需要該矩陣中每一行的 N(例如,N=2)最低值的索引。因此,對于上面的示例,我希望得到以下輸出:
[[0, 1],
[2, 3],
[3, 2],
[1, 2]]
其中輸出矩陣的行對應于原始矩陣的各行,輸出矩陣的行的元素是對應的原始行中N個最低值的索引(最好按原始矩陣中的值升序排列) )。我怎么能在 NumPy 中做到這一點?
uj5u.com熱心網友回復:
您可以使用簡單的回圈方法(不推薦),也可以使用np.argpartition:
In [13]: np.argpartition(m, 2)[:, :2]
Out[13]:
array([[0, 1],
[2, 3],
[2, 3],
[1, 2]])
uj5u.com熱心網友回復:
您可以在陣列上使用np.argsort,然后用 N 個最低/最高值對陣列進行切片。
np.argsort(m, axis=1)[:, :2]
array([[0, 1],
[2, 3],
[2, 3],
[1, 2]], dtype=int64)
uj5u.com熱心網友回復:
嘗試這個;
import numpy as np
m = np.array([[1, 2, 3, 4],
[10, 5, 3, 4],
[12, 8, 1, 2],
[7, 0, 2, 4]])
for arr in m:
print(arr.argsort()[:2])
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/516060.html
標籤:Python麻木的矩阵
