2018-08-28こしあんTweetPocketNumpy配列をグループ別に集計するときに、大抵Pandasを使うのですが、Numpyだけで集計するのってできるのかな?どうやるんだろうという話です。one-hotベクトルを使って集計する方法を紹介していきます。このアイディアはTwitterで教えてもらったものです。教えてくださった方に感謝。説明のためにIrisデータセットを使います。アヤメの種類)の形式の配列を作ります。Virginicaの順に0,1,2とします。np.array(iris["target"])]print(data)print()このような配列です。(略)]集計アヤメの種類をOne-hotベクトル化します。これと集計したい花弁の長さのベクトルをかけ合わせて、列単位の平均を取ります。axis=0)print(group_mean)グループの数が多いとちょっとメモリ食うかもしれません。one-hotベクトルをそのまま平均を取ってしまうと0の影響を受けてしまうので事前にNaNに置き換えます。np.nanmeanはNaNを除外して計算する関数です。標準偏差を取りたい場合はnanstdとします。結果は以下の通りです。2.026]NaNでもなんでもいいので、one-hotベクトル使って集計するときは必ず0を除外することを忘れないようにしてください。Commentコメントをキャンセルメールアドレスが公開されることはありません。