※この記事にはプロモーションが含まれています。

16. NumPyでベクトル・行列計算

NumPy入門!whereで条件に応じた要素の抽出

更新日:

条件を指定しての配列からの要素の抽出は、zipを利用してもできますが、NumPyのwhereを利用すると簡単に記述することができます。この記事では、zip、whereの使い方とその違いを確認していきましょう。

 

動画教材紹介私(清水 義孝)が作成したコース「Pythonによるビジネスに役立つWebスクレイピング」(Udemyへのリンク)が発売中!
発売数7,500本突破記念で、9月30日まで期間限定で92%オフの大セール中!!!

NumPyでのzipによる条件指定での抽出

同じ要素数のndarray型の配列A、B、conditionを用意します。配列A、Bについては適当な数値を格納し、配列conditionにはTrue、もしくは、Falseを格納します。配列A、B、conditionの要素を順に読み込み、conditionの値がTrueの場合はAから値を取得し、conditionの値がFalseの場合はBから値を取得するプログラムを記述します。

In [1]: A=np.array([1,2,3,4])
...: B=np.array([100,200,300,400])
...: condition=np.array([True,True,False,False])
...: answer=[(A_val if cond else B_val) for A_val,B_val,cond in zip(A,B,condition)] ...: answer
Out[1]: [1, 2, 300, 400]

 

zipでは複数の配列などのオブジェクトの要素を取り出すことができ、'for A_val,B_val,cond in zip(A,B,condition)'では、'zip(A,B,condition)'で配列A、B、conditionの要素を順に取り出し、それぞれ変数A_val、B_val、condに格納していきます。これらの変数は'A_val if cond else B_val'のif文でcondがTrueであれば変数A_valの値、condがFalseであれば変数B_valの値を出力用の配列の要素としています。

 
 
 

NumPyでのwhereによる条件指定での抽出

上記の複雑なプログラムは、NumPyのwhereを使うと簡単に記述することができます。whereではNumPyのndarray配列に対して、条件を満たす要素を簡単に抽出することができます。

記述方法は以下で、

numpy.where(条件式[, x, y])

条件式を満たす場合(真Trueの場合)はx、満たさない場合(偽Falseの場合)はyのndarray配列を返します。またx, yを省略した場合は、条件を満たすindexを返します。

 

このwhereを利用して、先ほどのプログラムは以下のように書き換えることができます。

In [2]: answer2 = np.where(condition,A,B)
...: answer2
Out[2]: array([1, 2, 300, 400])

 
 
 
著書の紹介です。

 

 
 
 
最後に...


Pythonの学習においては、実際に様々なプログラムを書いて試していくことが非常に重要です。Pythonについて、さらに詳しく学ばれたい方は、以下の私のUdemy講座をご検討いただければ幸いです。


Pythonを用いて世界中のWebサイトから自動的にデータ収集する方法を、基礎からていねいに学ぶことができます。Pythonを初めて学ばれた方も、最初に取り組みやすい内容になっています。


>> Pythonによるビジネスに役立つWebスクレイピング
発売数7,500本突破を記念して大セール中!期間限定になりますのでお早めに。
Pythonによるビジネスに役立つWebスクレイピング(BeautifulSoup、Selenium、Requests)講座の画面

既に7,500名以上の方に受講頂き、大変好評です。またコースに満足いただけない場合でも、30日返金保証があるので安心です。

期間限定の割引クーポンは、こちらから!
>> Pythonによるビジネスに役立つWebスクレイピング
   
   





まとめ記事

1

Python3におけるWEBスクレイピングのやり方について初心者向けに解説した記事です。   Requests、Beautiful Soup、Selenium、Pandas、newspape ...

2

Pythonの基本的なトピックについて、チュートリアル形式で初心者向けに解説した記事です。プログラミング未経験者や初心者でもわかりやすいよう、丁寧に解説しています。   Pythonでデータ ...

3

Pandas(パンダス)とは、データを効率的に扱うために開発されたPythonのライブラリの1つで、データの取り込みや加工・集計、分析処理に利用します。   Pandasには2つの主要なデー ...

4

データ分析、機械学習、ディープラーニングにはグラフの描画による可視化は不可欠です。データは、加工前の状態ではただの数字の羅列でしかなく、一目で必要な情報が伝わるものではありません。それを集計しグラフに ...

5

NumPy(ナンパイ)は、数値計算を効率的に行うための拡張ライブラリです。ベクトルや行列などを効率的に数値計算するための数学関数ライブラリを提供します。NumPyを使うことにより、数値計算をより早く、 ...

-16. NumPyでベクトル・行列計算

Copyright© AI-interのPython3入門 , 2023 All Rights Reserved.