Pythonで扱えるライブラリには、それぞれ異なる役割があり、複数のライブラリを併用して使う事で、真価を発揮する事ができます。ライブラリの一種であるNumPyは、中でも非常に重要な役割を果たしているため、様々な局面で利用することになるでしょう。NumPyの使い方や、その強みについてご紹介していきます。
NumPyとは
NumPyは、Pythonにおいて数値計算を行うためのライブラリで、オープンソースであるため無料で誰でも扱う事ができます。
Python向けの数値計算ライブラリ
Pythonを扱っていく上で、必要になるのが数々の数値計算です。これらはPython上で行う事ができる一方、繰り返しの作業をPythonだけでこなすとなると、大きな手間隙がかかってしまうことになります。
そこでNumPyの登場です。このライブラリは数値計算を素早く行うために必要な機能が数多く実装されており、他のライブラリと一緒に扱うことで、それぞれの機能を効果的に活用する事ができます。
特にデータサイエンスを扱う人にとっては必須とも言えるライブラリであるため、できるだけ早いタイミングから使用できるようになっておく事が大切です。
NumPyが機械学習に有効な理由
NumPyの高速数値計算が可能という特徴は、機械学習にも応用する事ができます。
人工知能に欠かせないディープラーニングのような複雑な処理は、いってしまえば高速で情報処理を行うことによって実現している技術です。
NumPyが高速で数値計算を行えるということは、ディープラーニングで扱うような大規模なデータ処理にも適しているということです。その他のライブラリと組み合わせてNumPyを扱うことで、スムーズな機械学習を進めていく事ができるでしょう。
NumPyの使い方
ここで、簡単なNumPyの使い方についても触れておきましょう。
NumPyをインポートする
まず、NumPyを実際に利用するためには、ライブラリを呼び出す必要があります。NumPyを呼び出すコマンドは、以下の通りです。
import numpy as np
NumPyをnpと名付け、インポートするためのコマンドですが、npという名前の部分は好きなもので構いません。ただ、教本など多くの場合でnpという名称が採用されているため、npという名前に慣れておくのも良いでしょう。
多次元配列の定義
NumPyの特徴とも言えるのが、多次元配列の定義です。NumPyではnp.ndarrayと呼ばれるクラスを活用する事で、多次元的に配列を活用し、数値計算の高速化に活用しています。
多次元的に扱える配列は、属性や大きさが同じである事が求められるなど、運用には一定の条件が存在します。格納できる要素に制限はあるものの、うまくデータを整えてやる事で、高速の数値計算が実現します。
axis(軸)の運用方法
NumPyには軸の概念があり、多次元配列にそれぞれ一つづつの軸が用意されています。例えば2次元の配列には行方向の軸、列方向の軸が存在し、それぞれ0と1という数字が割り振られます。これを、axis=0、axis=1と表現する事ができます。
これを以下の配列に当てはめてみます。
[0, 1, 2], [3, 4, 5],
行方向には3列存在し、それぞれ0,3、1,4、2,5という行があり、列方向には0,1,2、3,4,5という2列が存在しています。
つまり、例としてaxis=0の合計値を求める場合には(3,5,7)となり、axis=1の場合には(3,12)という値が算出されます。
合計値を算出するコマンドは、
a.sum(axis=0) a.sum(axis=1)
と入力して実行します。実際に入力して、配列と軸の概念を体で理解できるようになりましょう。
ブロードキャスト
NumPyを使う上で押さえておきたい機能として、ブロードキャスト機能が挙げられます。ブロードキャストはNumPyの同じ形の配列を高速で計算できる特徴をさらに引き出すための機能で、NumPyを使う上では必要不可欠の存在と言えます。
ブロードキャストの能力として、特徴的なのが形状を自動的に揃えてくれるという点があります。
実際に行う処理としては、まず次元数の統一です。配列の前方に長さ1の次元を追加し、配列の形状を整える事が可能です。配列の後方に次元を追加することはできないため、この点の調整は欠かせません。
あるいは、各次元数を調節することで、配列の計算ができるように整えてくれる機能も持っています。仮に片方の次元が1でありもう片方がそうでない場合には、後者の次元に1の次元が合わせられるよう、同じ値が繰り返されて配置されます。
ちなみにこちらの機能は、片方の次元が1でなければ機能せず、ブロードキャストができずにエラーとなるため、注意が必要です。
おわりに
ここまで、NumPyの基本的な使い方と、覚えておきたいいくつかのルールや機能についてご紹介していきました。
NumPyは機械学習に欠かせない、効率的な数値計算を実現するためには欠かせないライブラリです。他のライブラリとの併用によって、さらに効果を発揮してくれるため、使いこなせるようになる事が重要です。