私は主にPythonを使って開発をしているので、以前Pythonの便利なライブラリやフレームワークを紹介する記事を書いたのですが(後でリンク貼りますね)、今回はその記事でも紹介したNumPy(なむぱいと読みます)という数値計算用ライブラリの使い方チュートリアルを書きたいと思います。
NumPyは機械学習やディープラーニングなどを学ぶ上でも前提知識とされることが多いため、これからその辺の分野の勉強をしてみたい人の参考になればと思います。
チュートリアルの実行環境は、ブラウザだけでPythonもNumPyも使えるオンラインのプログラミング実行環境「paiza.IO (パイザ・アイオー)」を使っていきます。
■NumPyにおける配列
NumPyにおける配列は"ndarray"という形式になっていて、このndarrayはいろいろな機能を持っています。
まず、普通のリストをndarrayに変換するには以下のようなやり方になります。
shape, ndim, dtype.name, itemsizeとndarrayにおけるいろいろな要素も同時に出力しています。
shapeは各次元ごとの配列の大きさ……要するに2次元配列の方では1次元が2要素、2次元が3要素……というわけで(2, 3)となっています。3次元配列の場合は、3次元目で[1, 2]と2要素なので(2, 3, 2)となります。
ndimは次元数を指しています。
type.nameは要素の型を表しています。
配列の初期化をする場合は、以下のようにzeros, onesなどが使えます。
他にも、arangeを使うとPythonのrangeの拡張(等差数列を生成)、linespaceを使うと特定区間の数値を等間隔でとれたりします。
■配列へのアクセス
いわゆる一般的な配列のように、"a[1][1]" のようなアクセスをすることも可能なのですが、NumPyでは "a[1, 1]" というようなアクセスが可能です。
また、縦一列、横一列、特定の範囲を切り取るような形の取得なども容易にできます。
↓具体的にはこんな感じ。
■配列への操作
NumPyでは、かなり柔軟に配列を操作することができます。
↓こんな感じで配列全体への加算など、演算適応も容易にできます。2次元配列の場合も、1次元目の何番目かを全体へ適応させることなどもできます。
2次元配列同士の掛け算は行列の積と勘違いしちゃいそうですが、行列の積を求める場合は "a.dot(b)" というような記述になります。
■配列同士の結合
配列同士を結合する場合は "hstacka(a, b)" "vstack(a, b)" を使います。
hが横、vが縦にaとbを繋げるという意味になります。
↓実際にやってみるとこんな感じ
■配列のいろいろな集計
配列の合計から、中央値などいろいろな集計を簡単にすることができます。
↓こんな感じで、sum(合計)・median(中央値)・mean(平均)・std(標準偏差)・var(分散)・max(最大)・min(最小)といった集計を容易にできます。
■NumPyではこんなこともできます
◆相関関係を求める
相関係数を簡単に求めることができます。
◆多項式同士の計算など
np.poly1dを使えば多項式を作ることもできます。多項式同士の計算や特定の解を持つ多項式の生成などもできます。
■まとめ
Pythonの数値計算用ライブラリでは、今回使ったNumPyが基本のライブラリというか、定番として多くの人に使われているので、覚えておいて損はないと思います。
Pythonは数値計算処理が遅めな言語ではありますが、NumPyを使うと計算がすごく早くなります(※NumPyではC言語のネイティブコード上で計算が実行されるため)。
機械学習に限らず、ぜひ上記のようなコードを実際に書いて試してみてください。
NumPy公式ドキュメントはこちら
途中でブログパーツとして使ったオンライン実行環境サービス「paiza.IO (パイザ・アイオー)」はこちら
私が以前Pythonの便利なフレームワーク・ライブラリについて書いた記事はこちらですので、興味のある人は見てみてください。
paiza.hatenablog.com
■動画でプログラミングが学べるpaizaラーニングにPython×AI・機械学習入門編が登場!
動画でプログラミングが学べるpaizaラーニングでは、Python、Java、C言語、C#、PHP、Ruby、SQL、JavaScript、HTML/CSSなど、プログラミング初心者でも動画で学べる入門レッスンを公開しています。
そしてこのたび、新たに「Python×AI・機械学習入門編」が追加されました。
人気声優の上坂すみれさんによる進行役のスベトラーナ・小百合・ベレフスカヤと一緒に、実際に画像認識技術を使いながら、初心者でも機械学習を体験・学習できるレッスン内容になっています。
Python×AI・機械学習入門編は全編無料でごらんいただけます。詳しくはこちら
paizaは、技術を追い続けることが仕事につながり、スキルのある人がきちんと評価される場を作ることで、日本のITエンジニアの地位向上を目指したいと考えています。
自分のスキルを磨いていきたいと考えている方におすすめなのが「paizaラーニング」。オンラインでプログラミングしながらスキルアップできる入門学習コンテンツです。初心者でも楽しくプログラミングの基本を学ぶことができます。
そして、paizaでは、Webサービス開発企業などで求められるコーディング力や、テストケースを想定する力などが問われるプログラミングスキルチェック問題も提供しています。
スキルチェックに挑戦した人は、その結果によってS・A・B・C・D・Eの6段階のランクを取得できます。必要なスキルランクを取得すれば、書類選考なしで企業の求人に応募することも可能です。「自分のプログラミングスキルを客観的に知りたい」「スキルを使って転職したい」という方は、ぜひチャレンジしてみてください。