ラベル付けされたta​bleをカウントする​方法について

こんにちは。
ディープラーニングで学習するためのデータにラベル付けをおこないました。
そこで、各カテゴリごとのラベルの数を数えたいのですが方法が思いつきません。カテゴリは22種類あり、ラベル付けされているものは座標と幅、高さが記入されており、ラベル付けしてないものは空白のままです。tableの列方向のラベルの付いている数を知りたいです。
1万枚以上あるため、手動で数えるのは大変なのでなるべくプログラミングで実行したいです。
アイディア、アドバイス等ありましたら宜しくお願い致します。

5 Comments

データはおおよそこんなイメージですか?
label = {'hoge';'hoge'; '';'hoge'};
zahyo = [ 1,2; 3,4;5,6; 7,8];
width = [ 1; 2; 3; 4];
height = [ 5; 6; 7; 8];
T = table(label, zahyo, width, height);
そして
T.label
のなかで、 '' と一致しない数の合計を数えたい。
という理解で合っていますか?
HY
HY on 23 Dec 2020
コメントありがとうございます。
T=17400×23 table
label1 label2 ....
1.jpg [2 2 22 33] [0]
2.jpg [0] [9 8 30 28]
3.jpg [5 6 90 87] [0]
...
このように1枚の画像に対して複数のラベルがついていて、[x座標 y座標 幅 高さ]が与えられています。 この時、列方向に対して[0]以外のラベルがいくつあるのかを調べたいです。 上の例で言えば、label1は2つラベルがついていて、label2は1つのラベルが付いていることがわかります。labelは22こあり、画像は1万7千枚あります。 何かアドバイス等ありましたら、宜しくお願い致します。
例の提示ありがとうございます。
forで回せば何でも解決でき…1万7千枚はあまり回したくはないですね。遅くなりそうな気がする。
nameImg = { '1.jpg', '2.jpg', '3.jpg' }';
label1 = {[2 2 22 33], [0], [5 6 90 87]}';
label2 = {[0], [9 8 30 28], [0]}';
T = table( label1, label2, 'RowNames', nameImg)
% ゼロ以外のインデックス
i = not( cellfun( @(x) isequal(x,0), T.label1 ) );
% ゼロ以外が取り出せていることを確認
T.label1(i)
% ゼロ以外の数
sum(i)
こういう感じですか?あとはこれを22回繰り返すとか。
ちょっとすっきりしない。
HY
HY on 23 Dec 2020
丁寧にご回答頂き、ありがとうございます。 インデックスでゼロ以外のsumを取る方法を教えていただきありがとうございます。 参考になりました。 今は学習を始めてしまい、確認ができませんが終わり次第、是非やってみたいと思います。 大変ありがとうございました。
HY
HY on 24 Dec 2020
源樹様
すみません。なぜかわかりませんが、ベストアンサーを選べない状態です。
後日確認してみます。よろしくお願いいたします。

Sign in to comment.

 Accepted Answer

源樹 上林
源樹 上林 on 24 Dec 2020

0 votes

 解決されたようで何よりです。
 すみません、まだこの掲示板の使い方になれていないもので。選べないのはおそらく僕の書き込みがコメントだからです。回答の方に再投稿しておきます。
% ゼロ以外のインデックス
i = not( cellfun( @(x) isequal(x,0), T.label1 ) );
% ゼロ以外が取り出せていることを確認
T.label1(i)
% ゼロ以外の合計数
sum(i)
これで、ベストアンサーを選択できる状態になったと思います。よろしくおねがいします。

1 Comment

HY
HY on 24 Dec 2020
ありがとうございました!

Sign in to comment.

More Answers (0)

Asked:

HY
on 19 Dec 2020

Commented:

HY
on 24 Dec 2020

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!