文字列を数値に変換
조회 수: 23 (최근 30일)
이전 댓글 표시
例えば変数A=["apple", "apple","banana", "orange"];
といった中に文字が入力されている変数があるとします。
これをapple=1,banana=2, orange=3だとしてA=[1,1,2,3]のように変換したいと考えています。
いくつか方法を試したのですが、上手くいかず困っています。
ご教授いただけると幸いです。
댓글 수: 0
채택된 답변
Shunichi Kusano
2022년 11월 8일
カテゴリカル行列がうってつけな気がします。
A=["apple", "apple","banana", "orange"];
fruitsCat = categorical(A,["apple","banana","orange"]) % 第2引数は重複のない要素→これが順に1,2,3となる
uint8(fruitsCat) % カテゴリカルに対応する数値に変換
추가 답변 (4개)
Atsushi Ueno
2022년 11월 7일
本質問の対象となるリリースはR2022a、下記回答はR2022bで導入された機能ですが、一応書いておきます。
fruits = ["apple","banana","orange"];
numbers = [1,2,3];
dic = dictionary(fruits,numbers)
A = ["apple","apple","banana","orange"];
dic(A) % arrayfunが要らない!
댓글 수: 0
交感神経優位なあかべぇ
2022년 11월 8일
文字列一致判定で数値を代入する例を記述します。
A=["apple", "apple", "banana", "orange"];
Anum = zeros(1, length(A));
Anum(strcmp(A, "apple")) = 1;
Anum(strcmp(A, "banana")) = 2;
Anum(strcmp(A, "orange")) = 3;
disp(Anum);
댓글 수: 0
Atsushi Ueno
2022년 11월 7일
mapObj = containers.Map(["apple","banana","orange"], [1,2,3])
A = ["apple","apple","banana","orange"];
arrayfun(@(x) mapObj(x),A)
댓글 수: 0
Atsushi Ueno
2022년 11월 8일
type fruits.m % 添付のクラス定義ファイルを表示
A = ["apple","apple","banana","orange"];
Aenum = arrayfun(@(x) fruits.(x), A)
Anum = double(Aenum)
댓글 수: 0
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!