gpt4 book ai didi

arrays - 在一个衬里中选择数组中的 n 个最大值

转载 作者:行者123 更新时间:2023-12-05 09:22:48 25 4
gpt4 key购买 nike

没有特别的原因,我想知道是否有可能在一个数组或矩阵中选择 n 个最大值,所有这些都在 oneliner 中。

假设我有数组:

A=randn(1,100);

我想要最大的值,例如 20 个值,最好从高到低排序。到目前为止,我有 2-liner:

A_ordered = sort(A,'descend');
A_big20 = A_ordered(1:20);

有谁知道这是否可以在一行中实现?如果是这样,我将不胜感激线索、想法或答案!

最佳答案

你说你经常这样做,所以最简单和最好的方法是在 MATLAB 路径上定义一个函数:

function B = topN(A, n)

if nargin==2 && n==0
B = []; return; end

B = sort(A(:));
if nargin>1 && n < numel(A)
B = B(1:n); end

end

并调用你的“一个”类轮:

top_ten = topN( randn(1,100), 10 );

如果您希望它们按原始顺序排列(而不是排序):

function B = topN_unsorted(A, n)

if nargin>1 && n==0
B = []; return; end

if nargin==1 || n > numel(A)
B = A;
else
[B,I] = sort(A(:));
B = B(I(1:n));
end

end

关于arrays - 在一个衬里中选择数组中的 n 个最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24628963/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com