Python NumPy
ナビゲーションに移動
検索に移動
| Python | Python matplotlib | TensorFlow | Anaconda | 機械学習 | TeX |
Python NumPy
ドキュメント
リファレンス
概要
NumPy
- http://ja.wikipedia.org/wiki/NumPy
- 大部分がCで書かれたPython用の拡張モジュール
- 数値配列、行列を定義し、基本的な操作が可能
SciPy
- http://ja.wikipedia.org/wiki/SciPy
- 先進的な数学をNumPyを使って行うためのPythonのライブラリ
- 信号処理、最適化、統計、など
matplotlib
- 出版物のクオリティで、インタラクティブにプロットするのを容易にするライブラリ
NumPy
- NumPyは多次元配列を扱うライブラリで、主に扱うデータ型は配列である
- 配列は同じ型の要素のセットであり、正の整数のベクターによりインデックス付けされる
Install
apt-getを使ってubuntuへインストール
- sudo apt-get install python-numpy python-scipy
PIPを使ってインストール
- # pip install numpy
PIPを使ってWindowsにインストール
- Microsoft Visual C++ Compiler for Python 2.7
- C:\Python27\Scripts>pip install numpy
ベクトル・array 配列の生成
- 線形代数では要素を縦または横に一列にならべたものをベクトルと呼ぶ
- これは一次元の配列
- 多次元配列を表す数学用語のテンソルを利用して表すと、1階テンソル
- NumPyでは、array()でベクトルを生成する
ベクトル
- ベクトル記法 ( 1 3 5 ) をndarray で表現すると、array([1,3,5])
- このように横方向に並んだものを「行ベクトル」という
- 要素が3つあるので、「3次元行ベクトル」 となり、前から「第n成分」とよぶ
- ベクトル同士の演算は、次元数が同じことが条件
- ベクトル同士の計算は以下のように行われる
- 行ベクトルであれ列ベクトルであれ同様
リストから生成
- >>> from numpy import *
- >>> a = array( [ 10, 20, 30, 40 ] )
- >>> a
- array([10, 20, 30, 40])
arange を使い配列を生成
- arange([start,] stop[, step,], dtype=None)
0から始まる整数の配列を生成
- >>> b = arange(4)
- >>> b
- array([0, 1, 2, 3])
0から3まで 0.5 きざみの配列を生成
- >>> np.arange(0,3,0.5)
- array([ 0. , 0.5, 1. , 1.5, 2. , 2.5])
等しく割り付けられた配列を作成
- >>> c = linspace(-pi,pi,3)
- >>> c
- array([-3.14159265, 0. , 3.14159265])
既存の配列から生成
- >>> a1 = array([10,20,30])
- >>> a2 = array([1,2,3])
- >>> a3 = (a1 + a2) * 2
- >>> a3
- array([22, 44, 66])
多次元配列
shape で次元を取得
- >>> x = ones( (3,4) )
- >>> x
- array([[ 1., 1., 1., 1.],
- [ 1., 1., 1., 1.],
- [ 1., 1., 1., 1.]])
- >>> x.shape # タプルで次元を取得
- (3, 4)
shape 既存の配列の次元を変更
- >>> y = arange(12)
- >>> y
- array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
- >>> y.shape = (3,4)
- >>> y
- array([[ 0, 1, 2, 3],
- [ 4, 5, 6, 7],
- [ 8, 9, 10, 11]])
ベクトルの算術演算
四則演算
- ベクトルのx,y要素数が同じであれば、各要素ごとの算術演算が可能
- >>> import numpy as np
- >>> x = np.array([1,2,3])
- >>> y = np.array([4,5,6])
- >>> x + y
- array([5, 7, 9])
- >>> x - y
- array([-3, -3, -3])
- >>> x * y
- array([ 4, 10, 18])
- >>> x / y
- array([0.25, 0.4 , 0.5 ])
- >>> x % y
- array([1, 2, 3])
累乗、平方根
- >>> x = np.array([1,2,3,4], dtype=float)
- >>> np.power(x,2)
- array([ 1., 4., 9., 16.])
- >>> x ** 2
- array([ 1., 4., 9., 16.])
- >>> np.sqrt(x)
- array([1. , 1.41421356, 1.73205081, 2. ])
参照
箇所を指定
1次元
- x[n]
2次元
- x[n,m]
範囲を指定
1次元
- x[start:end:step]
2次元
- x[start:end:step,start:end:step]
行を抽出
- x[r]
- x[r,]
- x[r,:]
列を抽出
- x[,:c]
<blockquote>取り出した値が1次元の配列になるため注意 reshape()</blockquote>
条件を満たすデータを取り出す
操作
次元が異なる配列の演算
それぞれの列に掛ける
- >>> x = arange(4)
- >>> x
- array([0, 1, 2, 3])
- >>> x * 2
- array([0, 2, 4, 6])
それぞれの行に足し込む
- >>> y = arange(10)
- >>> y.shape = (2,5)
- >>> y
- array([[0, 1, 2, 3, 4],
- [5, 6, 7, 8, 9]])
- >>> y1 = array([10,20,30,40,50])
- >>> y2 = y + y1
- >>> y2
- array([[10, 21, 32, 43, 54],
- [15, 26, 37, 48, 59]])
© 2006 矢木浩人