Pythonによるデータ分析・機械学習ブログ

Pythonによるデータの前処理・グラフ化、機械学習、統計解析、画像処理、Webスクレイピング、自然言語処理の基礎について紹介していきます。

MENU

【第4回】Numpyにおける配列の演算、加減乗除、条件による判定

はじめに

Numpyはプログラミング言語Pythonにおいて数値計算を効率的に行うためのモジュールで、科学数値計算にはNumpyを用いることが非常に多くなっています。このモジュールは、効率的な数値計算を行うための型付きの多次元配列のサポートをPythonに加えるとともに、それらを操作するための大規模な高水準の数学関数ライブラリを提供しています。例えば、3行3列の行列の加減乗除などが計算できます。

前記事では、Numpyにおける数列の作成と加工について解説しました。

本記事では、Numpyにおける配列の演算、加減乗除、条件による判定について解説していきます。具体的には、ユニバーサルファンクション、ブロードキャストなどの機能を用いた配列の演算、配列同士の加減乗除、条件による真偽値の出力、条件に合致した要素の配列の出力を行います。

SAMURAI TERAKOYA

 

ユニバーサルファンクション

ユニバーサルファンクションは、配列の要素内のデータを一括で変換してくれる機能です。以下の例では、np.sin、np.cos、np.log、np.expで配列の要素内を一括で計算しています。

Input:

Output:

 

ユニバーサルファンクションにおいて、よく使うものに絶対値(np.abs)、平方根(np.sqrt)があります。

Input:

Output:

 

Input:

 

Ouput:

 

ブロードキャスト

ブロードキャストは、配列の内部のデータに直接演算などが行える機能です。最初は、配列に10を加算する例でa+10で各要素に+10された結果が出力されます。

Input:

Output:

 

次は、配列同士の足し算です。

以下の例では2行3列の2次元配列同士の足し算です。結果として、各配列の同じ位置の要素同士が足し算されて2行3列の2次元配列が出力されます。

Input:

Output:

 

以下の例では2行3列の2次元配列同士の引き算です。結果として、各配列の同じ位置の要素同士が引き算されて2行3列の2次元配列が出力されます。

Input:

Output:

 

以下の例では2行3列の2次元配列同士の掛け算です。結果として、各配列の同じ位置の要素同士が掛け算されて2行3列の2次元配列が出力されます。

Input:

Output:

 

以下の例では2行3列の2次元配列同士の割り算です。結果として、各配列の同じ位置の要素同士が割り算されて2行3列の2次元配列が出力されます。

Input:

Output:

 

次は、配列のべき乗の計算です。以下の例では、2行3列の配列の2乗の計算をしていて、各要素が2乗された配列が出力されます。

Input:

Output:

 

次は、内積(ドット積)についてです。np.dotを用いることで内積を求めることができます。以下の例では、2次元配列のaと1次元配列のbの内積を算出しています。

Input:

Output:

 

次は、配列の要素の平均値についてです。以下の例では、np.meanを用いて要素内の平均値を算出しています。

Input:

Output:

 

条件による判定

Numpyには、配列内の数値が条件に対する真偽値(True / False)を求めたり、真偽値の個数、条件に合った数値を抽出するなどの機能があります。

まずは、配列内の数値が条件に対する真偽値(True / False)を求めたり、真偽値の個数についてです。以下の例では、各要素とスカラー値(3)と比較した真偽値を求めています。3よりも大きい値ではTrueなっているのが確認できると思います。

Input:

Output:

 

次は、真偽値の配列を使って、条件に合致する要素の個数を求める機能についてです。条件に合致する要素の個数を求めるのに、np.count_nonzeroを用います。np.count_nonzeroでは0ではない要素数を算出するもので、PythonではFlaseを0として扱うので、Trueとなる要素数を算出しています。

Input:

Output:

 

np.sumを用いても真偽値の配列内のTrueの要素数を算出することができます。np.sumではTrueを1として扱い、その個数を足しています。

Input:

Output:

 

次は、要素の中にTrueが含まれているか判定する機能です。こちらを判定するには、np.anyを用います。以下の例では、Trueの要素が存在することからnp.anyの結果もTrueとなっています。

Input:

Output:

 

次は、すべての要素がTrueであるかを判定する機能です。こちらの判定には、np.allを用います。以下の例では、Falseも含んだ真偽値の配列になるのでnp.allの結果はFalseになります。

Input:

Output:

 

次は、真偽値の配列を使って、条件に合致した要素だけ抽出した配列を出力する機能についてです。

以下の例では、a>2でスカラー値2以上の要素だけを抽出していて、結果としてa>2となる要素である[3 4 5 6]が出力されています。

Input:

Output:

 

上記ではスカラー値との比較でしたが、配列同士での比較でもできます。以下の例では、a==bで同じ形状の配列同時の要素を比較して、真偽値の配列を出力しています。

Input:

Output:

 

そして、a[a==b]で、同じ形状の配列同時の要素を比較して、同じ値である(Trueとなった)要素だけを配列として出力しています。

Input:

Output:

 

次は、同じ要素かどうかを判定する機能です。以下の例では、np.allcloseを用いて、同じ形状の配列のすべての要素が同じであるかを判定しています。今回は同じ値でない要素もあるので、Falseが出力されています。

Input:

Output:

 

オススメ書籍

Pythonによるあたらしいデータ分析の教科書

Python3エンジニア認定データ分析試験の教科書にもなっている書籍で、データ分析に必要なPythonの基礎手法を身に付けることができます。具体的には、numpyとpandasを用いたデータの前処理、matplotlibを用いたデータのグラフ化、scikit-learnを用いた機械学習の基礎記述方法を身に付けることができます。これ一つで基礎はバッチリで、実務でも十分活用できると思います。個人的には見やすい書籍でした。

データサイエンス教本 Pythonで学ぶ統計分析・パターン認識・深層学習・信号処理・時系列データ分析

こちらの書籍は初心者から少し記述できるようになった人、かつ数学的な理論と一緒にPythonの記述方法を理解したい方にオススメです。統計分析、パターン認識、深層学習、信号処理、時系列データといった幅広く実務で使用する手法を学びたい方にもオススメです。

東京大学のデータサイエンティスト育成講座 ~Pythonで手を動かして学ぶデ―タ分析~

こちらの基礎を抑えながら実務で必要なPython記述法を学べる書籍です。基礎を一つ一つ抑えるというよりも実務で活用できるように必要な知識を身に付けられると感じました。これ一冊あれば十分かなと思いました。

 

スキル修得&転職

 近年、DXの進展に伴うデジタル人材の需要の高まりに追いついていない状況が続いていると経済産業省がホームページで記載している通り、DX人材、IT人材が不足しているのが現状です。さらにコンピュータの性能向上やAI技術の発展により、よりDX人材、IT人材の需要が高まってきます。さらには、今後の長期間安定して職がある業種とも考えられます。

以下の求人では、IT業界の転職や、IT未経験だけどIT人材を志望する就活を支援してくれます。無料で会員登録もできるので、まずは登録だけでもして様子を見てみてはいかがでしょうか?

▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼

▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲

 

おわりに

本記事では、Numpyにおける配列の演算、加減乗除、条件による判定について解説しました。具体的には、ユニバーサルファンクション、ブロードキャストなどの機能を用いた配列の演算、配列同士の加減乗除、条件による真偽値の出力、条件に合致した要素の配列の出力を行いました。これらの計算も機械学習の基礎として使用するので、しっかり覚えておきましょう。