「numpyを使って、ある数値以下の配列を0にしたい。」
pythonで行列計算を行っていると、このような状況に出くわすことは多いのではないでしょうか?
この記事では、このような状況を一瞬で解決できる
np.whereの使い方を解説しています。
初心者向けに事例を交えて解説していきますので、ぜひ最後までご覧ください。
それでは早速やっていきます!
np.whereの使い方
numpyで条件に応じて配列の数値を操作するには、np.whereというスキルを活用します。
np.whereの基本的な使い方は以下の通りです。
変数=np.where(A,B,C)
〇変数:変換後の配列の名前
〇A:変換前の配列に当てはめる条件
〇B:条件に当てはまった配列をどうゆう数値に変換するか
〇C:条件に当てはまらない配列をどうゆう数値に変換するか
とはいえ、これだけではイメージがわかないと思いますので、実際の使用例を見ていきましょう。
np.whereの使用例
以下の画像が実際にnp.whereをある行列に適用したときの結果になります。
※今回はanacondaプロンプト上でpythonを起動して操作した際の画面をご紹介します。
サンプルコードの解説
先ほど紹介したように、np.whereは
変数=np.where(A,B,C)
という形で適用します。
上の画像で言うと、変数、A,B,Cは
変数:MAT_B
⇒変換後の行列をMAT_Bという名前にしますよ~
A:MAT_A<=2
⇒MAT_Aの中の2以下の配列の数値を変換しますよ~
B:0
⇒Aの条件に当てはまった場所は0にしますよ~
C:MAT_A*2
⇒Aの条件に当てはまらなかった場所はもともとのMAT_Aから×2をしますよ~
というようになっています。
もともとの行列(MAT_A)は
1,2,3
2,3,4
3,4,5
だったので、MAT_A<2という条件は以下の☆の部分に適用されます。
☆,☆,3
☆,3,4
3,4,5
この☆の部分を0にしろ、それ以外の部分はもともとの数字×2をしろ、という命令になっていますので、今回の例の場合は
0,0,6
0,6,8
6,8,10
という形になります。
実際の計算もそうなっていることが確認できますね。
今回は非常にシンプルな計算しか行いませんでしたが、このnp.whereの中で行列の積を計算させたり、np.whereの中でさらにnp.whereを使ったりすることで複雑な処理も一発で行うことが可能です。
ぜひ自分でいろいろと工夫してみて、どのような動きをするのか確認してみましょう。
おわりに
というわけで今回はpythonのnumpyを使って、条件に応じて配列の数値を変換する方法をご紹介しました。
pythonはAI開発にも用いられている、最近人気のプログラミング言語です。
少しずつでもpythonスキルを高め、社内での地位を高めていきましょう。
このように私のブログでは様々なプログラミングスキルを紹介しています。
・もっと革新的なことをやりたい。
・プログラミングについてもっと詳しくなりたい。
こんな思いを持っている人は、ぜひ他の記事も見てみてくださいね。
この記事が役に立ったという方は、ぜひ応援よろしくお願いします。
↓ 応援ボタン
それではまた!
コメント