Look up a value in an incomplete list
조회 수: 1 (최근 30일)
이전 댓글 표시
I have keys and values like this:
keys = ["a", "b", "c", "d"];
vals = [3,4,2,1];
and I need to look up the values for x, but not all keys exist, e.g.:
x = ["c", "d", "e"];
which should result in:
y = [2, 1, NaN];
The problem I have is that strfind(), matches() yield empty arrays for "e", which leads to errors when looking up in vals.
Also, all arrays are >100k so I would like to avoid a for-loop.
댓글 수: 0
채택된 답변
추가 답변 (2개)
DGM
2022년 2월 21일
How about:
keys = ["a", "b", "c", "d"];
vals = [1,2,3,4];
x = ["c", "d", "e"];
[~,y] = ismember(x,keys);
y(y==0) = NaN
댓글 수: 2
DGM
2022년 2월 21일
Oof. I forgot about that.
keys = ["a", "b", "c", "d"];
vals = [11,22,33,44];
x = ["c", "d", "e"];
[m idx] = ismember(x,keys);
y = NaN(size(m));
y(m) = vals(idx(m))
참고 항목
카테고리
Help Center 및 File Exchange에서 Operators and Elementary Operations에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!