gpt4 book ai didi

arrays - 使用逻辑数组索引到矩阵

转载 作者:行者123 更新时间:2023-12-01 06:16:10 25 4
gpt4 key购买 nike

我有一个矩阵A,它是m x n。我想要做的是计算一行中 NaN 元素的数量。如果 NaN 元素的数量大于或等于某个任意阈值,则该行中的所有值都将设置为 NaN

num_obs = sum(isnan(rets), 2);
index = num_obs >= min_obs;

就像我说的,我正在努力让我的大脑工作。正在尝试下面这条线的不同变体,但没有成功。

rets(index==0, :) = rets(index==0, :) .* NaN;

threshold >= 1 的示例数据是:

A = [-7 -8 1.6 11.9;
NaN NaN NaN NaN;
5.5 6.3 2.1 NaN;
5.5 4.2 2.2 5.6;
NaN NaN NaN NaN];

我想要的结果是:

A = [-7 -8 1.6 11.9;
NaN NaN NaN NaN;
NaN NaN NaN NaN;
5.5 4.2 2.2 5.6;
NaN NaN NaN NaN];

最佳答案

使用

A = magic(4);A(3,3)=nan;
threshold=1;

for ii = 1:size(A,1) % loop over rows
if sum(isnan(A(ii,:)))>=threshold % get the nans, sum the occurances
A(ii,:)=nan(1,size(A,2)); % fill the row with column width amount of nans
end
end

结果在

A =

16 2 3 13
5 11 10 8
NaN NaN NaN NaN
4 14 15 1

或者,作为 @Obchardon在他的评论中提到你可以向量化:

A(sum(isnan(A),2)>=threshold,:) = NaN

A =

16 2 3 13
5 11 10 8
NaN NaN NaN NaN
4 14 15 1

作为旁注,您可以轻松地将其更改为列,只需对其他维度进行所有索引即可:

A(:,sum(isnan(A),1)>=threshold) = NaN;

关于arrays - 使用逻辑数组索引到矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41809770/

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