NumPy入門 サンプル集

この記事では、Python言語とNumPyで数値計算処理する方法とサンプルコードについて基礎から入門者向けに使い方を解説します。

NumPyとは

NumPyとは、Pythonで数値計算をするならば必須といえる数値計算モジュールです。
ndarrayと呼ばれる配列オブジェクトを使って、少ないコード量で効率よく高速に数値計算を行うことが出来ます。

NumPy配列の特徴

①配列の「要素数」「型」が固定(C言語の配列型に近い)
②処理が非常に高速(APIがC言語やFortranで実装されているため)

リスト型(list)よりも非常に高速に動作します。
これが、数値計算においてNumPyが普及している理由です。
【参考記事】【NumPy】主な特徴(メリット・デメリット)

以後、本ページで「配列」という表記はndarrayを指すこととします。

Python + NumPyの環境構築

環境構築の概要

Windons上でPython環境を構築するやり方は、主に「公式インストーラ」と「Pythonパッケージ」を使う方法があります。
また、Pythonパッケージは、「WinPython」や「Anaconda」などいくつか種類があります。
Python自体にもバージョン2と3の2種類があります。

※UbuntuやRaspbian OSはデフォルトでPyhonがインストール済です。

Windows上の環境構築

Windows上で環境構築する場合は「WinPython」というPythonパッケージを使うのがお勧めです。
その主な理由は次の通りです。

①Pythonだけでなく「NumPy、SciPyなどのライブラリ」や「統合開発環境」も一括で導入できて便利
(※公式のインストーラだとライブラリや統合開発環境を後で入れる必要があり大変)

②ポータブルされているので、USBで持ち運び可能

詳細を以下に整理しました。

項目
バージョン Python2と3の違い
環境構築法①
(Pythonパッケージ)
WinPython編, Anaconda編, Python(x, y)編,
環境構築法②
(公式インストーラ)
Python2.7編, Python3.5編
NumPyの導入 NumPyのインストール (Windows、Linux、Ubuntu)※Pythonパッケージの場合は不要
Pythonの基礎 Python入門 サンプル集

環境構築に詰まった

環境構築がうまく行かない場合は、ブラウザ上ですぐに使える実行環境「Try Jupyter」や「ideone.com」を使ってみましょう。
ソフトのダウンロード、インストール、設定などは一切不要でfirefoxやchromeなどのブラウザでページを開くだけでNumPyのプログラムを実行できます。

NumPy配列の基本操作

NumPy配列の基本操作(ndarray)についてまとめました。
入門者は「【NumPy】基礎的な扱い方」から読んでいただければ良いかと思います。

項目
はじめに 【NumPy】基礎的な扱い方
配列生成① 1次元配列, 2次元配列, 空配列(高速), 全要素1①,全要素1②, 全要素0①, 全要素0②, 単位行列, 三角行列, 繰り返し, 対数スケール, 格子状配列, データ型の指定, データ型の種類
配列生成②(乱数) 一様乱数(整数)①, 一様乱数(整数)②, 正規分布, 標準正規分布, 二項分布, ポアソン分布, ベータ分布, χ分布, ガンマ分布, F分布, ラプラス分布, 対数正規分布, 指数分布, ディリクレ分布, ガンベル分布, ロジスティック分布, 幾何分布, 超幾何分布
範囲生成 範囲指定, 間隔指定, 個数指定, 格子状配列生成
参照・代入 1次元配列への代入・参照, 2次元配列への参照・代入
配列操作 配列コピー, 次元数を変更, 配列のデータ型を変換, 書込禁止モード, シャッフル, ソート(昇順・降順), 要素の位置をずらす
配列結合 縦に結合, 横に結合
配列分割 縦・横に分割
算術演算 要素同士の掛け算, 要素同士の割り算, 要素同士の割り算の余り, 要素の累乗
データ抽出 行の抽出, 列の抽出, 条件を満たす要素を抽出, ランダム抽出①, ランダム抽出②
インデックス抽出 条件を満たす要素のインデックス, 非0要素のインデックス, 最大値・最小値要素のインデックス
情報抽出 行・列数, データ型, 対角成分, 0の要素数, 非0要素の数, 任意の値の要素数, バイト数(全体), バイト数(1要素), 次元数
配列の比較 完全一致
応用 乱数の出現率を偏らせる
参考 【Numba】NumPy+for文の高速化

グラフ描画

NumPyで計算した結果はMatplotlibなどのライブラリでグラフ化できます。

Matplotlib

項目
ヒストグラム 乱数のヒストグラム
まとめ Matplotlib入門 サンプル集

ファイル処理

項目
読込 CSV①, CSV②
書込 TXT, CSV

数値計算

項目
連立方程式 連立方程式の解
三角関数 正弦, 余弦, 正接
数学関数 指数関数, 対数関数, 対数関数(底10), 対数関数(底2), 円周率, ネイピア数e
統計量 合計, 平均, 分散, 標準偏差, 不偏分散, 不偏標準偏差, 偏差値, 最大値, 最小値, 中央値, 算術平均, 差分, 勾配
確率分布 正規分布, 標準正規分布, 二項分布, ポアソン分布, ベータ分布, χ分布, ガンマ分布, F分布, ラプラス分布, 対数正規分布, 指数分布, ディリクレ分布, ガンベル分布, ロジスティック分布, 幾何分布, 超幾何分布
点推定 母平均の点推定, 母分散の点推定, 母比率の点推定
区間推定 母平均の区間推定(t分布), 母分散の区間推定(χ2分布)
検定 t検定, F検定, カイ二乗検定
回帰分析 最小二乗法, 重回帰分析, 直線近似, 曲線近似, 株価予測
座標変換 直交座標→極座標

線形代数

項目
ベクトル 加減算, 内積, 外積, ノルム, 単位ベクトル(正規化)
行列 加減算, 内積, 外積, 階数(RANK), 行列式, 転置行列, 固有値ベクトル
逆行列 逆行列, 擬似逆行列
行列分解 特異値分解SVD, QR分解, コレスキー分解, 回転行列

信号処理

項目
フーリエ変換 高速フーリエ変換, 高速逆フーリエ変換, スペクトル解析, ノイズ除去
応用例 画像のスペクトル強度解析

株価分析

項目
準備 NumPyインストール, NumPyの基本的な使い方
移動平均線 作成, 保存, GC・DC
周波数解析 フーリエ変換
多変量解析 回帰分析①, 回帰分析②, 重回帰+MA①, 重回帰+MA②, 単回帰+MA
jsmと連携 GC・DC
まとめ Pythonで株価予測・分析

ロボット工学

項目
順運動学 2リンク
逆運動学 2リンク(幾何学), 2リンク(収束演算①), 2リンク(収束演算②)
数学 回転行列で座標変換, k1sinθ+k2cosθ=k3の解
まとめ Pythonでロボットシミュレーション

参考文献

項目
参考文献 NumPy公式ドキュメント, NumPy入門 (rest term様), python/numpy(朱鷺の杜Wiki様)
まとめ NumPyでよく使う機能一覧
便利 データ処理の題材に使えるCSVファイル一覧
他言語 Python, C言語, Java, C#, Javascript, PHP入門, VBAマクロ, Processing

シェア&フォローお願いします!