機械学習・ディープラーニングがゼロから学べる大人気『脱ブラ』が無料に!

【NumPy 入門】NumPy の特徴を解説!機械学習との関係も紹介

こんにちは!株式会社キカガクの竹内です。普段は機械学習・ディープラーニングの講師をしています。

本記事は、AI や機械学習の実装で必ず使用するであろうライブラリの一つである NumPy に関する記事です。
今回は、そもそも NumPy とはどういったものであるかを解説します!

今後も NumPy に関する記事を執筆していく予定ですので、本記事をきっかけに NumPy について理解を深めてみてはいかがでしょうか!

NumPy とは

公式ドキュメントによると、NumPy は以下のように説明されています。

NumPy は、Python による科学計算のための基本パッケージです。
多次元配列オブジェクト、様々な派生オブジェクト(マスクされた配列や行列など)、そして、数学、論理、図形操作、ソート、選択、入出力、離散フーリエ変換、基本的な線形代数、基本的な統計操作、ランダムシミュレーションなど、配列に対する高速な操作を行うルーチンの数々を提供する Python ライブラリである。
引用 : NumPy 公式ドキュメント

少し長く、専門用語も多く理解しづらいですが、簡単にまとめると Python での数値計算を効率よく、高速に行うことができるライブラリです。

用語解説
  • オブジェクト
    整数や実数、文字列などのデータのこと
  • ライブラリ
    便利な関数やクラスをまとめたパッケージを複数集め、まとめてインストールできるようにしたもの

NumPy の特徴

NumPy は大きく以下のような特徴が挙げられます。

NumPy の特徴
  1. 処理速度が高速
  2. 配列の扱いが柔軟
それぞれもう少し詳しく見ていきましょう。

1. 処理速度が高速

Python は C 言語や Java に比べて for 文によるループ処理が非常に遅いです。

しかし、NumPy に準備されている関数を利用することで、 for 文を用いずに記述することができ、結果として処理速度が速くなります

補足①

Python はインタプリタ言語であるため、コンパイル言語である C 言語や Java と比較して処理が遅くなってしまいます。 しかし、NumPy の内部は C 言語で実装されているため、Python の実装においても高速な処理を実現しています。

補足②

コンパイル言語はファイルを一括で機械が理解できるプログラムに変換して実行するプログラム言語であるのに対し、インタプリタ言語は 1 行ずつコードを読み込んで実行するため、一般的に処理速度は遅くなります。

2. 配列の扱いが柔軟

NumPy では Python の標準機能であるリスト型変数ではなく、NumPy の ndarray 型という特別な配列を使用します。

この配列は、参照したい要素に簡単にアクセスできたり、配列同士を容易に計算できたりと、柔軟な扱いができる特徴あります。

これにより、直感的かつ短いコード量でコーディングができます。

注意
NumPy の関数を利用せずに、ndarray 型の配列の要素を for 文などを使って処理をすると処理速度が著しく遅くなるため注意が必要です。

NumPy と機械学習

近年、非常に注目を浴びている機械学習や AI といった分野において、以下の理由から NumPy は必須のライブラリとなっています。

NumPy が機械学習や AI 分野で必須な理由
  1. 膨大な数値計算を高速に行うことが求められるため
  2. AI や機械学習を実装する際に便利な関数が多く用意されているため

それぞれもう少し解説していきます。

1. 膨大な数値計算を高速に行うことが求められるため

機械学習や AI は、「データ」から機械(コンピューター)が自動で学習し、データの背景にあるルールやパターンを発見する手法です。
その「データ」とは数値であり、コンピューターが膨大な数値計算を行うため、NumPy の高速な処理は非常にメリットとなります。

2. AI や機械学習を実装する際に便利な関数が多く用意されているため

NumPy で AI や機械学習を実装する際に便利な関数が多く用意されています。
こういった実装のしやすさも NumPy が必須の理由の一つです。
例えば、下記のような関数があります。

AI や機械学習を実装する際に便利な関数
  1. dot()
    行列積を計算
  2. sum(), max(), min()
    配列の要素の合計値、最大値、最小値を算出
  3. reshape()
    配列を任意の形状に変換
  4. concatenate()
    指定した軸で配列を結合
  5. transpose()
    配列の軸の順番を入れ替え
他にも様々な関数が用意されています。
気になる方は公式ドキュメントを読んでみることがおすすめです!

最後に

もし、動画で NumPy の内容を学習したい!という方は、元副社長の動画がおすすめです。


以上、NumPy の特徴の解説でした!
皆さまも NumPy の良さを理解して、是非使ってみて下さい!

今後も、ndarry 型の詳細な説明や NumPy で準備されている便利な関数の紹介など、NumPy に関する記事を投稿予定ですのでお楽しみに!

参考リンク

参考 Chainer チュートリアル

大人気コース「Python & 機械学習入門コース」が無料!

現在 e ラーニングプラットフォーム「キカガク」に無料登録すると、これまで多くの方にご受講頂いた、Python の基礎から機械学習の数学やプログラミングまでを学べる大人気コース「Python & 機械学習入門コース」が無料です。

好評である手書きの数学とハンズオン形式のプログラミングを通じて、初学者でも数学の理論から実装まで一から学習できます。また、動画で丁寧に解説しているため、迷うことなく最後まで継続して学習しやすいです。

Python の基礎から機械学習を学習したい方は、ぜひ教材の1つとしてご利用ください!