Numpy.argmax() 在二维矩阵的某个轴上

2 投票
1 回答
3262 浏览
提问于 2025-04-18 01:04

我现在正在创建一个排名算法,用来评估学生之间的关系。在我的一个NxN矩阵F中: F[i, j]表示学生i和学生j之间的关系。值越高,关系越强。

我遇到的问题是这样的:为了创建一个包含k个学生的群体,我首先选择F中最大的值的位置。如果这个最大值的位置是(i, j),我就把学生i和学生j加入我的群体。接下来,我想在F的i和j轴上找到下一个最大的值,并把这两个值中较大的一个作为下一个加入群体的学生。然后我会继续这个过程,直到我的群体中有k个学生。

我感到困惑的地方是: numpy.argmax()需要一个扁平化的轴作为参数,用来指定要搜索的轴。我该如何扁平化i和j轴,以便可以使用numpy.argmax(F, flattenedAxis)呢?

我对Python还是个相对初学者,所以这个问题可能有个简单的答案,但我之前并不知道。谢谢大家的帮助。

1 个回答

4

这段代码会告诉你在矩阵F中,最大的元素的位置索引。

ind = np.unravel_index(np.argmax(F),F.shape)

这段代码会告诉你在第j列中,最大的元素所在的行号。

max_row_in_col_j = np.argmax(F[:,j])

这段代码会告诉你在第i行中,最大的元素所在的列号。

max_col_in_row_i = np.argmax(F[i,:])

撰写回答