NumPyとは?
NumPyとは、Pythonの数値計算ライブラリの一種です。NumPyは多次元配列オブジェクトをPythonに実装し、多数の演算関数を提供します。NumPyは英語の読み方として「ナムパイ」と発音します。一部「ナムピー」とも呼ばれていますが、「ナムパイ」の読み方が多数派です。
Pythonは元来数値計算向けに開発されたものではなかったため、SIG(Special Interest Group)が中心となってPythonの構文に配列の取扱いを取込みました。NumPyの意味ですが、最初のパッケージはNumericと呼ばれていました。後に"Numerical Python extensions"や"NumPy"と呼ばれるようになりました。
現在はNumericの機能拡張を経て、NumPyが正式名称で”Numerical Python”の略となっています。 参考:NumPy 参考:Guide to NumPy
Pythonのライブラリとは?
Pythonはプログラム記述がシンプルで、オブジェクト指向プログラミングにより高機能なプログラムが簡単に記述できるメリットがあります。Pythonの特徴はオープンソースソフトウェアのため、ライブラリ等のソフトウェア公開が進んでいることが挙げられます。
Pythonのライブラリとは複数の機能をまとめたもので、パッケージ化したものです。上記Pythonの特徴から、分析アルゴリズムが共通化しやすいAIでは機械学習や深層学習のライブラリが数多く提供されています。
公開ライブラリのインストール管理は、PyPIまたはAnacondaの2種類の公開サービスのいずれかを用いることが多いです。特にAnacondaは数値計算やデータ分析に必要なライブラリを一括管理できるため、NumPyを利用する際にもAnacondaの活用をおすすめします。
NumPyでできること
NumPyは数値計算を行うライブラリです。NumPyではベクトル演算や行列演算で用いる多次元配列を扱うことができます。
さらに、NumPyのライブラリコードはC言語で作成されています。C言語はコンパイラ言語のため、インタープリタ型に比べてランタイムのオーバーヘッドが少なく、コード最適化が図られています。このためNumPyのライブラリは高速で処理できることが特徴です。
Pythonにはバイトコンパイル機能があるものの、インタープリタとして動作するためC言語で開発されたライブラリの活用は魅力的です。上記理由から、NumPyはデータの読み込み工程やデータの前処理・加工工程で良く用いられています。
pandasとは?
NumPyと同じようによく用いられているのが、pandasです。pandasとは数表や時系列データに強みを持つデータ操作解析ライブラリです。データを読み込んで並べ替えを行ったり、欠損データの補完を行ってデータ分析しやすい形式に変換したり、主にデータの読み込み工程やデータの前処理工程で用いられます。 参考:Pandas
NumPyの使い方
NumPyの使い方は、Pythonコードで以下のようにライブラリをインポートします。 “import numpy as np” ここで”np”はNumPyのドキュメントでも頻繁に利用される名称ですので、コードの影響がなければそのまま使用します。
ここで”import”時にエラーとなる場合は、NumPyがインストールされていない可能性があります。その際は以下のインストール方法を試してみましょう。
NumPyのインストール方法
NumPyをインストールするにはAnacondaのcondaまたはAnaconda Navigatorを用いるか、pipを用いてインストールします。
AnacondaではNumPyがデフォルトでインストールされています。インストールが必要でcondaを用いる場合は、”conda install numpy”を実行します。Anaconda Navigatorの場合はパッケージの「Not Installed」からNumPyをチェックし「Apply」をクリックします。「Installed」に表示されたら使用可能です。
pipを用いる場合は、”pip install numpy”を実行します。インストールしても“import numpy as np”でエラーが発生する場合は、ライブラリのパスが正しく反映されていない可能性があります。
特にAnacondaの場合は、インストール時のインストール先のパスを変更した際にPATH環境変数への反映を行う必要があります。インストール時にインストーラの「Advanced Options」で設定するか、手動でAnacondaインストール先の”Library\bin”をPATH環境変数へ追加する必要があります。
NumPyの配列
配列とは英語でarrayと呼びます。そもそも配列とは、コンピュータプログラムのデータ構造の一種です。配列は連続するデータ空間に格納されるデータの集合体を意味します。NumPyでも配列はarrayとして利用します。
使用例: import numpy as np a = np.arange(3) b = np.array([1, 2, 3, 4]) c = np.array([[1, 2, 3, 4], [5, 6, 7, 8]]) d = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]) print("a=",a) print("b=",b) print("c=",c) print("d=",d)
実行結果: a= [0 1 2] b= [1 2 3 4] c= [[1 2 3 4] [5 6 7 8]] d= [[ 1 2 3 4] [ 5 6 7 8] [ 9 10 11 12]]
arange関数は等差数列の配列を生成する関数です。array関数は配列を作成する関数です。変数aには等差数列の[0 1 2]が作成されました。変数bは1次元配列、変数cは2次元配列、変数dは3次元配列です。
上記の他にも2次元配列を作成するeye関数やdiag関数が用意されています。3次元以上のndarrayを作成する場合はones関数やzeros関数等を用います。
NumPyの基本演算
Pythonでも数値計算を行うためにいくつかの組み込み関数やmath関数が用意しています。Pythonで演算する場合は配列の要素を実行時に動的に分解したり、for文のループを行いますので処理が複雑になり計算時間がかかります。
NumPyではあらかじめ必要な計算処理をそれぞれの関数として提供しますので、開発コードがシンプルでかつ高速処理が行えます。以下に、数値計算で用いる一般的な処理と対応する関数について説明します。
・四則演算 配列の四則演算には対応するadd・subtract・multiply・divideの各関数が用意されています。 ・累乗・平方根・指数・対数 累乗・平方根・指数・対数には対応するpower・sqrt・exp・logをはじめとする各関数が用意されています。 ・三角関数 三角関数には対応するsin・cos・tan・arcsin・arccos・arctanをはじめとする各関数が用意されています。
NumPyの集計機能
NumPyで基本演算が完了したら集計機能を活用します。NumPyの集計機能は、以下のような関数を提供しています。
・ソート関数 ソート関数はsort・ndarray.sortをはじめとする各関数が用意されています。 ・集計関数 集計関数はmin・max・sum・meanをはじめとする各関数が用意されています。 ・欠損値・異常値処理 欠損値はNaNですのでisnanで欠損値を検出したり、nan_to_numで補正することができます。 その他にもisinf・isneginf・isposinfで異常値を検出することもできます。
NumPyのデータ入出力機能
NumPyでデータ分析する場合は、元となるデータをファイルから入力し結果をファイルに保存するのが一般的です。NumPyでは以下のようなデータ入出力機能を提供しています。
・ファイル入出力 ファイル入出力はsave・load・savetxt・loadtxtをはじめとする各関数が用意されています。 Npy配列ファイルの入出力はload・save関数を用います。 ・CSVファイル入出力 CSVファイルやテキストファイルの読み込みはloadtxt関数です。 複雑なファイルはgenfromtxt関数を用います。
NumPyの初心者は、CSVのインポート・エクスポートはpandasを用いた方がより簡単に読み込みできます。取り込んだデータをNumPyで配列演算に利用します。読み込みはread_csv関数、書き込みはto_csv関数です。 使用例: import pandas as pd a = pd.read_csv('ファイル名.csv', header=0).values
NumPyを用いて効率的にデータ分析をすすめましょう
NumPyでは多次元配列を用いて高度なデータ分析を行うことができます。そのためPythonのデータ分析業務では、データの読み込み工程やデータの前処理・加工工程で良く用いられています。
NumPyを使うことで配列の演算や分析作業がシンプルなコードで効率的、かつ高速に実行することができます。さらにNumPyを活用することで、データ分析の効率が向上し分析精度が向上します。ぜひNumPyをデータ分析に活用することをおすすめします。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから