R H*_*ill 4 matlab numpy octave
我试图弄清楚这样做的最好方法,理想情况是在Octave中,但我会把NumPy放在紧要关头.
假设我有一个axb矩阵M.如果我想要任何给定列中最大值的行索引,[x, xi] = max(M)将把这些索引作为行向量返回给我.
例如,如果M是:
1 3 5
2 9 1
7 2 4
Run Code Online (Sandbox Code Playgroud)
上述将返回行向量[3 2 1]作为xi; 每行索引的向量,包含该列的最大值.这很好.我想要这个行矢量.
但是,如果我想要前n个这样的行向量怎么办?
[编辑解释这个更好]
对于上面的例子,第一个这样的矢量将是上面的[3, 2, 1](每个给定列具有最高值的行的索引).第二个这样的矢量将是[2 1 3](每列的第二高值的行的索引).
我可以迭代地做,但我的实际矩阵有几千行,所以这在计算上非常昂贵.我找不到任何明显的矩阵效用函数来帮助我实现这一目标.有什么建议?
我假设你的意思是你想要矩阵中的n个最大值.在这种情况下,获取矩阵中n个最大元素的索引几乎与此问题相同,除了OP需要整个矩阵的最大值,而不是单个最大值.这应该可以满足您的需求
n = 2; % The depth to get
M = [ 1, 3, 5; ...
2, 9, 1; ...
7, 2, 4 ]; % The matrix to look at
[m, mi] = sort(M, 'descend'); % Sort the to access them
x = m(1:n, :) % Get the values
xi = mi(1:n, :) % and the indices
Run Code Online (Sandbox Code Playgroud)