python/numpy
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
* numpy [#zac1d944]
#contents
//ここには %項目の説明を書いてください.よろしければ署名...
[[python]] の数値計算関連ライブラリ numpy のtipsまとめ
> -- しましま
* リンク集 [#a87a4d25]
//関連するWWW資源があればリンクしてください.
** 公式サイト [#c63e28d5]
-[[NumPy>http://numpy.scipy.org//]]:数値演算の基本
-[[SciPy>http://www.scipy.org//]]:より高度な関数
-[[SciKits>http://scikits.appspot.com/]]:さらに進んだ科...
** パッケージ [#z10f277d]
pip や easy_install によるインストールの前に多くの外部ラ...
- 商用(サポートなしなら無料でも利用できる)
-- [[Anaconda>https://store.continuum.io/]]:無料版でもIn...
-- [[Enthought Canopy>http://www.enthought.com/]]
- フリー
-- [[Unofficial Windows Binaries for Python Extension Pac...
** その他 [#n5b6f24f]
- [[pyvideo.org>http://pyvideo.org/]]:PyCon, SciPy, PyDa...
- [[100 numpy exercises>https://github.com/rougier/numpy-...
- [[Pythonidae>http://svaksha.github.io/pythonidae/]]:Py...
- [[SciPy Central>http://scipy-central.org/]]:SciPy 関連...
- [[SciPy Advice>http://advice.mechanicalkern.com/]]:集...
- [[SciPy course>http://www.rexx.com/~dkuhlman/scipy_cour...
- IPythonノートブック
-- [[IPython notebook viewer>http://nbviewer.ipython.org/...
-- [[A gallery of interesting IPython Notebooks>https://g...
-[[Python for Biologist>http://pythonforbiologists.com/]]...
** 資料 [#ic069832]
- 本家サイトの基礎資料
--[[Tentative Numpy Tutorial>http://www.scipy.org/Tentati...
--[[Numpy/Scipy Cookbook>http://www.scipy.org/Cookbook]]...
--[[Numpy Example List>http://wiki.scipy.org/Numpy_Exampl...
--[[Numpy for Matlab Users>http://www.scipy.org/NumPy_for...
--[[A beginners guide to using Python for performance com...
-[[Python for Scientific Computing Conference>http://conf...
-- [[Planet Scipy>http://planet.scipy.org/]]:科学技術系...
-- [[Topical Software>http://www.scipy.org/Topical_Softwa...
- [[Data Science in Python>http://blog.yhathq.com/posts/d...
- [[NumPy MedKit>http://mentat.za.net/numpy/numpy_advance...
- [[Scientific Computing with Python>http://www.scientifi...
- matlabユーザ向け
--[[Numerical Computing in Python: A Guide for Matlab Use...
--[[Migration @ BCPy2000>http://bci2000.org/downloads/BCP...
- チートシート
--[[Python Cheat Sheets>https://drive.google.com/foldervi...
--[[Thesaurus of Mathematical Languages, or MATLAB synony...
--[[scipy array tip sheet>http://pages.physics.cornell.ed...
--[[Numerical Analysis Software: Fortran, MATLAB, R, NumP...
--[[Numeric matrix manipulation: The cheat sheet for MATL...
-[[PyData Tokyo>http://pydatatokyo.connpass.com/]]:Pytho...
-[[Tokyo.SciPy>http://groups.google.com/group/tokyo_scipy...
--[[資料スライド一覧>http://www.slideshare.net/tag/tokyos...
--[[サンプルコードなど @ github>https://github.com/organi...
- [[Science with Python>https://groups.google.com/forum/?...
- [[科学技術計算のために Python を始めよう>http://www.ike...
-- [[Scipy Lecture Notes>http://www.scipy-lectures.org/]]...
- [[Introduction to Python Programming @ NCLab>http://fem...
- [[機械学習 はじめよう @ 技術評論社>http://gihyo.jp/dev/...
- [[機械学習のPythonとの出会い>http://www.kamishima.net/m...
- [[Python による科学技術計算の概要>http://www.kamishima....
* Numpyの概要 [#q38168ab]
ここでの記述は
import numpy as np
import scipy as sp
とされていることが前提.ここにはよく使うものだけを示して...
** [[NumPy: Array objects>http://docs.scipy.org/doc/numpy...
*** N-次元配列 (ndarray) [#pf6b175a]
- [[The N-dimensional array (ndarray)>http://docs.scipy.o...
ndarray オブジェクトは Numpy の配列で,python の配列と比...
普通のオブジェクトのようにオブジェクトそのものと,オブジ...
a * b などのかけ算は要素積で行列積にはならないことに注意...
''生成方法'':基本は以下のとおり
np.array([2, 3, 4]) … 1次元配列
np.array([[3, 4], [8, 10]]) … 2次元配列
ここではリストからの変換だったが,タプルからの変換もでき...
配列の型は次のように指定
np.array([2,3,4], dtype=int)
''ndarrayの属性'':
- ndarray.shape:配列の各次元の大きさをタプルで返す
- ndarray.ndim:配列の次元数
- ndarray.dtype:配列の要素の型.型を変えるときは親クラス...
''ndarrayのメソッド'':
- ndarray.tolist, ndarrray.tostring:リストや文字列への変換
- ndarray.copy:配列のオブジェクトのコピー
- ndarray.tofile, ndarray.dump:バイナリ,テキスト,pickl...
- ndarray.astype:やはり主なものint(a) などとしても int型...
その他にも,argmax などの関数は a.argmax などのメソッドと...
*** スカラー と データ型オブジェクト (dtype) [#w44c17e2]
-[[Scalars>http://docs.scipy.org/doc/numpy/reference/arra...
-[[Data type objects (dtype)>http://docs.scipy.org/doc/nu...
python にある int や float に該当するスカラーの型.ndarra...
bool_,int_,float_,complex_ が主な型だが,python標準の ...
配列の要素がスカラー型だとオブジェクトを代入できない.そ...
*** インデキシングIndexing [#l9d00f8f]
- [[Indexing>http://docs.scipy.org/doc/numpy/reference/ar...
''値の参照と代入'':次元ごとに "," で区切って要素を指定.
>>> a
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
>>> a[1, 2]
6
逆に代入もできる
>>> a[2, 1] = -1
>>> a
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, -1, 10, 11]])
添え字に負数を指定すると最後からの指定になる
>>> a[-1, -2]
10
1次元配列の 0, 3, 4 番目を参照しようとして "," で区切ると...
>>> b
array([ 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
>>> b[[0,3,4]]
array([2, 5, 6])
a の 0,2行と,0,3列 で構成される 2×2 行列を作ろうとして次...
>>> a[[0,2],[0,3]]
array([ 0, 11])
要素 [0,0] と [2,3] の指定になってしまう.こんなときは ix...
>>> a[np.ix_([0,2],[0,3])]
array([[ 0, 3],
[ 8, 11]])
bool値での指定もできる(リストのままだと True=1, False=0 ...
>>> a[np.array([False, True, True, False]), :]
array([[[ 4, 5, 6, 7],
[ 8, -1, 10, 11]]])
":" を使うとその次元の全ての要素になる.
>>> a[1, :]
array([4, 5, 6, 7])
もちろん行や列ごとの代入もできる.
連続した要素は普通のシーケンスと同様に参照できる(シーケ...
>>> a[:, 1:3]
array([[ 1, 2],
[ 5, 6],
[-1, 10]])
シーケンスと同様に増分も指定できる.
>>> b[1::3]
array([3, 6, 9])
増分に負数を指定すると順序が逆転する
>>> a[:, ::-1]
array([[ 3, 2, 1, 0],
[ 7, 6, 5, 4],
[11, 10, -1, 8]])
次元数を増やしたいときは newaxis を使う
>>> b[np.newaxis, :]
array([[ 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]])
>>> b[:, np.newaxis]
array([[ 2],
[ 3],
[ 4],
[ 5],
[ 6],
[ 7],
[ 8],
[ 9],
[10],
[11]])
3次元以上の配列で複数の次元の ":" をまとめて指定するには ...
>>> c
array([[[10, 11],
[12, 13]],
[[14, 15],
[16, 17]]])
>>> c[..., 1]
array([[11, 13],
[15, 17]])
''ビュー'':同じメモリ領域に対し,異なる indexing で参照...
>>> a
array([[1, 2, 3],
[4, 5, 6]])
>>> b = a[:, 1:3]
>>> b
array([[2, 3],
[5, 6]])
>>> a[1,2] = -1
>>> b
array([[ 2, 3],
[ 5, -1]])
違う配列にしたいときは copy メソッドを使う
>>> c = a[:, 0:2].copy()
>>> c
array([[1, 2],
[4, 5]])
>>> a[0,0]=-10
>>> c
array([[1, 2],
[4, 5]])
*** 配列クラスの下位クラス [#lbc181f8]
- [[Standard array subclasses>http://docs.scipy.org/doc/n...
- [[Masked arrays>http://docs.scipy.org/doc/numpy/referen...
- matrix:繰り返す Matrix オブジェクトのことは忘れよう
- memmap:メモリ上ではなく,ファイル上に配列を確保
- rec:列を数値ではなくラベルで参照できる.あとは普通に n...
- ma:データ本体に加え,その要素が有効かどうかを示すマス...
''イテレータ'':ndarray をイテレータとして使うと,a.ndim ...
** Numpy: Universal functions (ufunc) [#fb691948]
- [[Universal functions (ufunc)>http://docs.scipy.org/doc...
''broadcasting'':"*" や "+" など配列の要素間で2項を演算...
+ 配列の shape が完全に一致
+ 次元数が一致し,各次元で大きさが一致するか,大きさが1
+ 次元数が少ない方の次元の前に大きさ1の次元を加えると上記...
最後の条件は一方がスカラーの場合以外はあまり使わない方が...
>>> a
array([[1, 2],
[3, 4]])
>>> a * 3
array([[ 3, 6],
[ 9, 12]])
2番目の条件を満たすように,明示的に newaxis を入れる方が...
>>> b
array([10, 20])
>>> a * b[np.newaxis, :]
array([[10, 40],
[30, 80]])
>>> a * b[:,np.newaxis]
array([[10, 20],
[60, 80]])
''エラー処理''
- seterr:0除算,オバーフロー,アンダーフロー,不正入力な...
''キャスト規則'':型のキャストルール
- can_cast:二つの型の間でキャストできるかどうか
** [[NumPy: Routines>http://docs.scipy.org/doc/numpy/refe...
*** 配列の生成 [#z4af47d8]
-[[Array creation routines>http://docs.scipy.org/doc/nump...
''基本生成''
- empty, eye, ones, zeros:初期化なし,単位行列,1配列,0...
- empty_like, ones_like, zeros_like:与えた配列と同じ大き...
- (repeat:指定した同じ要素で埋める)
''既存データからの作成''
- asarray:リストとかを ndarray オブジェクトに変換
- frombuffer:下位のデータ構造から生成.[[うまく使うと速...
- fromfunction, fromiter, fromstring:関数出力,イテレー...
- loadtxt:CSV や スペース 区切りのファイルからの読み込み...
''範囲''
- arange:python の range の ndarrayオブジェクト版
- linspace,logspace:等間隔,対数間隔の数列を得る.グラ...
- meshgrid:縦横に等間隔な格子状の配列を作る
''行列生成''
- diag:対角行列
- tri, tril, triu:三角行列
*** 配列の操作 [#a41baf75]
- [[Array manipulation routines>http://docs.scipy.org/doc...
''形状変換''
- reshape:バッファ全体の大きさはそのままで形状を変更する...
- 1次元の配列に要素を並べ替えたビューやコピー
-- ravel:どの軸を優先で並べるか指定できる.指定によって...
-- flat:現在の格納順で1次元の配列に並び替えたビュー
-- ndarray.flatten:ndarray.flat と同じだが,コピーを返す
''転置''
- ndarray.T:2次元以上の行列の転置ビューを返すメソッド.1...
- transpose:転置だが,a.T と違って,転置する次元を指定で...
- swapaxes:軸を交換したビュー.メソッドもある
''次元数の変換''
- at_least1d, at_least2d, at_least3d:それぞれ最低1次元,...
- squeeze:大きさが1の次元を全部除去した配列を返す
- newaxis:横ベクトル a を縦ベクトル a[np.newaxis, :] に...
''結合・連結''
- concatinate:指定した軸で結合
- dstack:第3軸の結合
- hstatck, vstack:第1軸,第2軸の結合だが r_[] や c_[] の...
''分割''
- split, array_aplit:指定した軸で分割
- hsplit, vsplit, dsplit:第1〜3軸で分割
''タイル''
- tile:部分行列の繰り返し行列
- repeat:同じ要素で構成される行列.行ベクトルごとに一様...
''要素の追加・削除''
- delete, insert:部分行列の削除・挿入
- resize:全体のバッファの大きさの変更.メソッドもある.
- unique:行列中にある要素を含む配列を返す.100クラスある...
''要素の再配置''
- fliplr, flipud:左右・上下の反転.というか a[:, ::-1] ...
- reshape:行列の形状の変更.メソッドもある.非常によく使...
*** インデキシング [#y49d3b52]
- [[Indexing routines>http://docs.scipy.org/doc/numpy/ref...
''インデックスの配列の生成''
- c_[], r_[]:列方向や行方向への結合.vstack や hstack よ...
>>> a
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
>>> c_[np.ones(a.shape[0]), a]
array([[ 1., 0., 1., 2., 3.],
[ 1., 4., 5., 6., 7.],
[ 1., 8., 9., 10., 11.]])
- ix_:要素をリストで [[1,1], [3,3]] と指定すると a[1, 1]...
- nonzero(a):非0要素のindexを返す.
nz = np.nonzero(a)
a[nz] += a[nz] **2
みたいにすると疎行列では効率的になる.メソッドもある.ち...
for ix in np.nonzero(a):
a[ix] += a[ix] **2
- where:where(a > 5) とかだと,a の要素が 5より大きな要...
- indices:全要素のindex
-- その他対角要素や,上下の三角行列の要素とかもある
''要素を選択して操作''
- choose:where は bool 値だが,choose は3択以上でも配列...
- diag:対角要素の取り出し,多次元のなかから2次元分の対角...
- select:where で条件が複数書ける
''配列へのデータの代入''
- put:indexの大きさが合っていれば普通の代入と同じだが,...
- putmask:条件を満たしたところだけ代入
- fill_diagonal:対角要素への代入
''イテレータ''
- ndenumarate:引数配列の要素を順番に参照するイテレータ
- ndindex:ndenumerateと違って,配列そのものではなく,形...
- nditer:いっぱい複雑な機能のあるイテレータ
*** データ型の操作 [#k881785c]
- [[Data type routines>http://docs.scipy.org/doc/numpy/re...
dtype型の操作をする.普通に数値計算してるときはあまりお世...
- finfo, iinfo:浮動小数点や整数の最大・最小値などの情報...
print np.finfo(np.float32)
print np.iinfo(np.uint8)
*** 入出力 [#yeaa9371]
- [[Input and output>http://docs.scipy.org/doc/numpy/refe...
''NPY/NPZ形式''
- load, save, savez:npy, npz の専用形式でのファイル入出力
''テキスト形式''
- loadtxt, savetxt:それほど大きくなければ,TSV/CSV も読...
- genfromtxt:欠損値の扱いが特殊な場合
- fromregx:各行のフォーマットを正規表現で書いて,正規表...
- fromstring:文字列から1次元の配列を作る.文字列の split...
''文字列フォーマット''
- array_str, array_repr:print で使うような形式の文字列へ...
''memmapファイル''
- memmap:配列をメモリではなく,ファイル上に確保.大きな...
''テキストのprint形式オプション''
- set_printoptions, get_printoptions:プリントのオプショ...
*** 線形代数 [#be513bc7]
- [[Linear algebra (numpy.linalg)>http://docs.scipy.org/d...
''行列・ベクトルの積''
- dot:内積・行列積の基本.ちょっと細かい点で動作の違う v...
- outer:外積
- tensordot:テンソルドット積
- kron:クロネッカー積
- linalg:matrix_power:行列の指数
''分解''
- linalg.{cholesky, qr, svd}:コレスキー,QR,特異値分解
''固有値・固有ベクトル''
- linalg.eig:固有値と固有ベクトルの計算.他にもいくつか...
''ノルムなど''
- linalg.norm:Lnノルム
- linalg.cond:条件数
- linalg.det, linalg.slogdet:行列式,行列式の自然対数
- trace:トレース
''線形方程式の解と逆行列''
- linalg.solve, linalg.tensorsolve:線形方程式,テンソル...
- linalg.lstsq:最小2乗解,すなわち線形回帰
- linalg.inv, linalg.pinv, linalg.tensorinv:逆行列,擬逆...
''例外''
- linalg.LinAlgError:線形代数関連のpython例外
*** 乱数生成 [#c08965c1]
- [[Random sampling (numpy.random)>http://docs.scipy.org/...
乱数生成には python標準の random もある.こちらの random ...
乱数生成だけなので,確率密度関数や分位点が必要なときは sc...
再現性のある実験やテストをしたいときには,np.random.seed ...
たいていの分布はあるのだが,Bernoulli分布 がなくて困るこ...
np.random.binomial(1, p, size=100)
Pr[x=1 | y] を長さ 2 の配列 p[y] に入れているとする.y の...
np.random.binomial(1, p[y])
''順列''
- shuffle:配列の内容の位置をランダムに入れ替え
- permutation:多次元配列のときは,第1軸の方向だけでラン...
*** ソート,検索,計数 [#j6797488]
[[Sorting, searching, and counting>http://docs.scipy.org/...
''ソート''
- sort:リストのソートを配列にしたもの.メソッドもある.
- argsort:ソートした内容ではなく,index を返す
- lexsort, msort, sort_comprex なども
探索
- argmax, argmin:最大・最小値になるindexを返す.
- nanargmax, argmin:NaN を無視するargmax, argmin
- nonzero, argwhere:非ゼロ要素を返すことになっているが,...
- where:条件を満たす要素を返す.choose のような代入もで...
''計数''
- count_nonzero:非ゼロ要素の数を返す
*** 論理関数 [#q0f5fdb7]
- [[Logic functions>http://docs.scipy.org/doc/numpy/refer...
''真理値のテスト''
- all:全称限量子.配列の要素が全て真のとき真を返す.
- any:存在限量子.配列の要素が一つでも真のとき真を返す.
''配列の内容チェック''
- isfinite, isinf, isnan, isneginf, isposinf:有限,無限...
''行列の型チェック''
- 複素数やスカラーなど配列の型をチェック
''論理演算''
- logical_and, logical_or, logical_not, logical_xor:普通...
''比較''
- allclose:数値演算ではうまく等価にならない場合もあるの...
- array_equal, array_equiv, greater, greater_equal, less,...
*** 二値演算 [#fbab4456]
- [[Binary operations>http://docs.scipy.org/doc/numpy/ref...
''要素ごとのビット演算''
- bitwise_and, bitwise_or, bitwise_xor, invert:ビット論...
- left_shift, right_shift:ビットシフト
''ビットのパック''
- packbits, unpackbits:0/1 値の配列を uint8型 の配列に変...
*** 統計 [#oad250d3]
- [[Statistics>http://docs.scipy.org/doc/numpy/reference/...
分布の統計量などは sp.stats を参照のこと.
''極値''
- amax, amin, ptp:軸にそった最大値,最小値,(最大 - 最小)
- nanmax, nanmin:不定値を除いた最大値,最小値.高速な bo...
''平均と分散''
- mean:算術平均
- average:重み付きが可能な平均
- median:中央値
- std:標準偏差
- var:分散
''相関''
- corrcoef:相関係数
- cov:共分散行列
''ヒストグラム''
- histogram, histogram2d, histogramdd:1次元,2次元,3次...
pxy = np.histogram2d(x, y, bins=(k, k), range=((0, k), (...
pxy = pxy / np.sum(pxy)
- bincount:histogram と同様の使い方ができる
- digitize:指定したビンで離散値に変換する
*** 数学関数 [#x88c5a1a]
- [[Mathematical functions>http://docs.scipy.org/doc/nump...
digamma や erf などもっと高度な数学関数は sp.special を参...
''三角関数''
- sin, cos, tan, arcsin, arccos, arctan, arctan2:mathパ...
- degrees, radians, deg2rad, rad2deg:ラジアンと度の相互...
- unwrap:ラジアンを -2π〜2π に収まるまで 2π を引く
''双曲線関数''
- sinh, cosh, tanh, arcsinh, arccosh, arctanh:mathパッケ...
''まるめ''
- around, rint:普通のまるめ
- floor:入力値以下の最大整数
- ceil:入力値以上の最小整数
- fix:0に近い方の整数
- trunc:少数部分の削除
''和・積・差''
- prod, sum:和や積.軸を指定できる.x と y の頻度が入っ...
>>> n
array([[ 2., 3.],
[ 4., 2.]])
>>> n / np.sum(n, axis=1)[:, np.newaxis]
array([[ 0.4 , 0.6 ],
[ 0.66666667, 0.33333333]])
- cumprod, cumsum:累積積,累積和
- nansum:不定値以外の和.bottleneck もパッケージを参照.
- diff, ediff1d, gradient:配列間の差や勾配
- cross:クロス積
- trapez;台形則での数値積分
''指数・対数関数''
- exp, expm1, exp2:配列処理対応の exp, exp(x) - 1, 2^x
- log, log10, log2, log1p:自然対数,常用対数,底が2の対...
- logaddexp, logaddexp2:exp(sum(log))
''その他の数学関数''
- i0:第1種,次数0のBessel関数.他のBessel関数は sp.speci...
- sinc:sin(πx) /(πx)
''浮動小数点''
- signbit:0以上なら真
- copysign:符号のコピー
- frexp, ldexp:指数表現部分と数値部分の分離統合
''四則演算''
- add, subtract, multiply, divide, negative:要素ごとの四...
- reciprocal, power:逆数,累乗
- true_division, floor_division:整数同士の除算.実数を返...
- fmod, mod, reminder:モジュロ演算だが負数の扱いとかが微...
- modf:少数部分と整数部分に分ける
''複素数''
- real, imag:実数と虚数部分
- angle:角
- coonj:複素共役
''その他''
- convolve:たたみ込み
- clip:指定した区間に納める
- sqrt, square:正実数だけの平方根と複素数にも対応した平...
- fabs, absolute:実数用と複素数用の絶対値
- sign:負,0,正のとき -1, 0, +1
- maximum, minimum:要素を比較して大きい方・小さい方を返す
- interp:線形補間
*** 関数プログラミング [#w5f341b1]
- [[Functional programming>http://docs.scipy.org/doc/nump...
- apply_along_axis:関数を要素の軸に沿って適用する.特徴...
apply_along_axis(sigmoid, 1, x, w)
関数の返す次元が100ぐらいまでは,リスト内包表記,それ以降...
[sigmoid(x[i, :], w) for i in xrange(x.shape[0])]
- apply_over_axes:複数の軸に渡って関数を定義する.頻度を...
apply_over_axes(np.sum, n, [1, 2]) / np.sum(n)
- vectorize:スカラー用の関数があるとき,それをベクトル対...
print numpy.vectorize(lambda x: x*2)(numpy.arange(1, 3))...
- frompyfunc:pythonの関数をベクトル対応に
- piecewise:select と似ているが,値の選択だけでなく,関...
*** 多項式 [#w74498d6]
- [[Polynomials>http://docs.scipy.org/doc/numpy/reference...
Polynomial, Legendre などいくつかの級数展開した式のクラス...
- poly1d:C_n x^n + C_{n-1}x^{n-1} +…+ C_1 x + C_0 や (x ...
- polyval:定義した多項式を評価
- poly:指定した根をもつ多項式の係数の列
- roots:多項式の根
- polyfit:多項式へのあてはめ
- polyder:導関数
- polyint:不定積分
- polyadd, polysub, polymul, polydiv:四則演算
*** 集合関数 [#sf1a8248]
- [[Set routines>http://docs.scipy.org/doc/numpy/referenc...
- unique:配列中に存在する値の配列を返す.疎な値しか取ら...
- intersect1d, union1d, setxor1d, setdiff1d:積集合,和集...
- in1d:最初の集合に含まれる各要素について,2番目の集合に...
*** numpy専用ヘルプ関数 [#b3574da1]
- [[Numpy-specific help functions>http://docs.scipy.org/d...
- lookfor:関数のdocstringの検索
- info:関数,クラス,モジュールの説明
- source:ソースの表示
*** その他のルーチン [#n1ed4411]
''離散フーリエ変換''
- [[Discrete Fourier Transform (numpy.fft)>http://docs.sc...
libfft を呼び出す離散フーリエ変換の関数群.scipy があれば...
''日時処理関数''
- [[Datetime Support Functions>http://docs.scipy.org/doc/...
営業日かどうかを調べる
''金融関数''
- [[Financial functions>http://docs.scipy.org/doc/numpy/r...
金利関連計算
''窓関数''
- [[Window functions>http://docs.scipy.org/doc/numpy/refe...
関数や系列に掛け合わせる窓関数
''浮動小数点エラー処理''
- [[Floating point error handling>http://docs.scipy.org/d...
オーバーフローなどの数値演算上のエラーがあるとき例外にす...
''マスク付き配列''
- [[Masked array operations>http://docs.scipy.org/doc/num...
通常の配列用の関数をマスク付き配列用にしたもの.マスクの...
''雑多な関数''
- [[Miscellaneous routines>http://docs.scipy.org/doc/nump...
メモリ領域(バッファ)の確保など
''テスト用''
- [[Test Support (numpy.testing)>http://docs.scipy.org/do...
unittest や doctest などを書くときに使う関数
''自動型適応する数学関数''
- [[Mathematical functions with automatic domain (numpy.e...
複素数を使うときに型変換が通常のものと異なる数学関数
''scipyで高速化されうる関数''
- [[Optionally Scipy-accelerated routines (numpy.dual)>ht...
固有値・逆行列,フーリエ変換,Bessel関数の i0 などは scip...
''文字列操作''
- [[String operations>http://docs.scipy.org/doc/numpy/ref...
通常の文字列処理関数をベクトル処理できるように拡張
** [[SciPy>http://docs.scipy.org/doc/scipy/reference/]] [...
''クラスタリング''
- [[Clustering package (scipy.cluster)>http://docs.scipy....
k-means法 の sp.cluster.vq と凝集型階層的クラスタリングの...
''定数''
- [[Constants (scipy.constants)>http://docs.scipy.org/doc...
黄金比,光速,重力定数,アボガドロ数など様々な定数
''フーリエ変換''
- [[Fourier transforms (scipy.fftpack)>http://docs.scipy....
scipy があれば,numpy のものを呼び出してもこちらが使われ...
''数値積分''
- [[Integration and ODEs (scipy.integrate)>http://docs.sc...
関数や数列から数値積分を行う.
''補間''
- [[Interpolation (scipy.interpolate)>http://docs.scipy.o...
numpy は interp は線形1次だけだが,多次元や,多項式・スプ...
''入出力''
- [[Input and output (scipy.io)>http://docs.scipy.org/doc...
matlab, matrix market, wav, arff, netcdf の入出力
''線形代数''
- [[Linear algebra (scipy.linalg)>http://docs.scipy.org/d...
numpyより関数の種類は増えている.scipy があれば,numpy の...
''その他の関数''
- [[Miscellaneous routines (scipy.misc)>http://docs.scipy...
''n次導関数,階乗など''
- [[Multi-dimensional image processing (scipy.ndimage)>ht...
画像処理.フィルタ処理など簡単なもの.より高度なものは op...
''直交距離回帰''
- [[Orthogonal distance regression (scipy.odr)>http://doc...
説明変数が独立でない場合の回帰
''最適化と求根''
- [[Optimization and root finding (scipy.optimize)>http:/...
最適化関数群だが,共役勾配法やニュートン法など基本的なも...
''信号処理''
- [[Signal processing (scipy.signal)>http://docs.scipy.or...
たたみ込み,Bスプライン,ウェーブレット,各種フィルタ処理.
''疎行列''
- [[Sparse matrices (scipy.sparse)>http://docs.scipy.org/...
- [[Sparse linear algebra (scipy.sparse.linalg)>http://do...
ほとんどの要素が 0 の疎行列を処理する.あまりよくないとも...
''空間アルゴリズムとデータ構造''
- [[Spatial algorithms and data structures (scipy.spatial...
近傍点の検索を高速化する kd-木 や,Delaunay三角形分割など
''距離計算''
- [[Distance computations (scipy.spatial.distance)>http:/...
ベクトル間の距離だけでなく,距離行列をまとめて計算できた...
''特殊関数''
- [[Special functions (scipy.special)>http://docs.scipy.o...
numpy は初等関数だけだが,こちらは Bessel関数,ガンマ関数...
- ディガンマ関数は psi 関数という名前になってる
''統計関数''
- [[Statistical functions (scipy.stats)>http://docs.scipy...
numpy は乱数生成だけだが,様々な確率分布の密度関数,分位...
終了行:
* numpy [#zac1d944]
#contents
//ここには %項目の説明を書いてください.よろしければ署名...
[[python]] の数値計算関連ライブラリ numpy のtipsまとめ
> -- しましま
* リンク集 [#a87a4d25]
//関連するWWW資源があればリンクしてください.
** 公式サイト [#c63e28d5]
-[[NumPy>http://numpy.scipy.org//]]:数値演算の基本
-[[SciPy>http://www.scipy.org//]]:より高度な関数
-[[SciKits>http://scikits.appspot.com/]]:さらに進んだ科...
** パッケージ [#z10f277d]
pip や easy_install によるインストールの前に多くの外部ラ...
- 商用(サポートなしなら無料でも利用できる)
-- [[Anaconda>https://store.continuum.io/]]:無料版でもIn...
-- [[Enthought Canopy>http://www.enthought.com/]]
- フリー
-- [[Unofficial Windows Binaries for Python Extension Pac...
** その他 [#n5b6f24f]
- [[pyvideo.org>http://pyvideo.org/]]:PyCon, SciPy, PyDa...
- [[100 numpy exercises>https://github.com/rougier/numpy-...
- [[Pythonidae>http://svaksha.github.io/pythonidae/]]:Py...
- [[SciPy Central>http://scipy-central.org/]]:SciPy 関連...
- [[SciPy Advice>http://advice.mechanicalkern.com/]]:集...
- [[SciPy course>http://www.rexx.com/~dkuhlman/scipy_cour...
- IPythonノートブック
-- [[IPython notebook viewer>http://nbviewer.ipython.org/...
-- [[A gallery of interesting IPython Notebooks>https://g...
-[[Python for Biologist>http://pythonforbiologists.com/]]...
** 資料 [#ic069832]
- 本家サイトの基礎資料
--[[Tentative Numpy Tutorial>http://www.scipy.org/Tentati...
--[[Numpy/Scipy Cookbook>http://www.scipy.org/Cookbook]]...
--[[Numpy Example List>http://wiki.scipy.org/Numpy_Exampl...
--[[Numpy for Matlab Users>http://www.scipy.org/NumPy_for...
--[[A beginners guide to using Python for performance com...
-[[Python for Scientific Computing Conference>http://conf...
-- [[Planet Scipy>http://planet.scipy.org/]]:科学技術系...
-- [[Topical Software>http://www.scipy.org/Topical_Softwa...
- [[Data Science in Python>http://blog.yhathq.com/posts/d...
- [[NumPy MedKit>http://mentat.za.net/numpy/numpy_advance...
- [[Scientific Computing with Python>http://www.scientifi...
- matlabユーザ向け
--[[Numerical Computing in Python: A Guide for Matlab Use...
--[[Migration @ BCPy2000>http://bci2000.org/downloads/BCP...
- チートシート
--[[Python Cheat Sheets>https://drive.google.com/foldervi...
--[[Thesaurus of Mathematical Languages, or MATLAB synony...
--[[scipy array tip sheet>http://pages.physics.cornell.ed...
--[[Numerical Analysis Software: Fortran, MATLAB, R, NumP...
--[[Numeric matrix manipulation: The cheat sheet for MATL...
-[[PyData Tokyo>http://pydatatokyo.connpass.com/]]:Pytho...
-[[Tokyo.SciPy>http://groups.google.com/group/tokyo_scipy...
--[[資料スライド一覧>http://www.slideshare.net/tag/tokyos...
--[[サンプルコードなど @ github>https://github.com/organi...
- [[Science with Python>https://groups.google.com/forum/?...
- [[科学技術計算のために Python を始めよう>http://www.ike...
-- [[Scipy Lecture Notes>http://www.scipy-lectures.org/]]...
- [[Introduction to Python Programming @ NCLab>http://fem...
- [[機械学習 はじめよう @ 技術評論社>http://gihyo.jp/dev/...
- [[機械学習のPythonとの出会い>http://www.kamishima.net/m...
- [[Python による科学技術計算の概要>http://www.kamishima....
* Numpyの概要 [#q38168ab]
ここでの記述は
import numpy as np
import scipy as sp
とされていることが前提.ここにはよく使うものだけを示して...
** [[NumPy: Array objects>http://docs.scipy.org/doc/numpy...
*** N-次元配列 (ndarray) [#pf6b175a]
- [[The N-dimensional array (ndarray)>http://docs.scipy.o...
ndarray オブジェクトは Numpy の配列で,python の配列と比...
普通のオブジェクトのようにオブジェクトそのものと,オブジ...
a * b などのかけ算は要素積で行列積にはならないことに注意...
''生成方法'':基本は以下のとおり
np.array([2, 3, 4]) … 1次元配列
np.array([[3, 4], [8, 10]]) … 2次元配列
ここではリストからの変換だったが,タプルからの変換もでき...
配列の型は次のように指定
np.array([2,3,4], dtype=int)
''ndarrayの属性'':
- ndarray.shape:配列の各次元の大きさをタプルで返す
- ndarray.ndim:配列の次元数
- ndarray.dtype:配列の要素の型.型を変えるときは親クラス...
''ndarrayのメソッド'':
- ndarray.tolist, ndarrray.tostring:リストや文字列への変換
- ndarray.copy:配列のオブジェクトのコピー
- ndarray.tofile, ndarray.dump:バイナリ,テキスト,pickl...
- ndarray.astype:やはり主なものint(a) などとしても int型...
その他にも,argmax などの関数は a.argmax などのメソッドと...
*** スカラー と データ型オブジェクト (dtype) [#w44c17e2]
-[[Scalars>http://docs.scipy.org/doc/numpy/reference/arra...
-[[Data type objects (dtype)>http://docs.scipy.org/doc/nu...
python にある int や float に該当するスカラーの型.ndarra...
bool_,int_,float_,complex_ が主な型だが,python標準の ...
配列の要素がスカラー型だとオブジェクトを代入できない.そ...
*** インデキシングIndexing [#l9d00f8f]
- [[Indexing>http://docs.scipy.org/doc/numpy/reference/ar...
''値の参照と代入'':次元ごとに "," で区切って要素を指定.
>>> a
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
>>> a[1, 2]
6
逆に代入もできる
>>> a[2, 1] = -1
>>> a
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, -1, 10, 11]])
添え字に負数を指定すると最後からの指定になる
>>> a[-1, -2]
10
1次元配列の 0, 3, 4 番目を参照しようとして "," で区切ると...
>>> b
array([ 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
>>> b[[0,3,4]]
array([2, 5, 6])
a の 0,2行と,0,3列 で構成される 2×2 行列を作ろうとして次...
>>> a[[0,2],[0,3]]
array([ 0, 11])
要素 [0,0] と [2,3] の指定になってしまう.こんなときは ix...
>>> a[np.ix_([0,2],[0,3])]
array([[ 0, 3],
[ 8, 11]])
bool値での指定もできる(リストのままだと True=1, False=0 ...
>>> a[np.array([False, True, True, False]), :]
array([[[ 4, 5, 6, 7],
[ 8, -1, 10, 11]]])
":" を使うとその次元の全ての要素になる.
>>> a[1, :]
array([4, 5, 6, 7])
もちろん行や列ごとの代入もできる.
連続した要素は普通のシーケンスと同様に参照できる(シーケ...
>>> a[:, 1:3]
array([[ 1, 2],
[ 5, 6],
[-1, 10]])
シーケンスと同様に増分も指定できる.
>>> b[1::3]
array([3, 6, 9])
増分に負数を指定すると順序が逆転する
>>> a[:, ::-1]
array([[ 3, 2, 1, 0],
[ 7, 6, 5, 4],
[11, 10, -1, 8]])
次元数を増やしたいときは newaxis を使う
>>> b[np.newaxis, :]
array([[ 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]])
>>> b[:, np.newaxis]
array([[ 2],
[ 3],
[ 4],
[ 5],
[ 6],
[ 7],
[ 8],
[ 9],
[10],
[11]])
3次元以上の配列で複数の次元の ":" をまとめて指定するには ...
>>> c
array([[[10, 11],
[12, 13]],
[[14, 15],
[16, 17]]])
>>> c[..., 1]
array([[11, 13],
[15, 17]])
''ビュー'':同じメモリ領域に対し,異なる indexing で参照...
>>> a
array([[1, 2, 3],
[4, 5, 6]])
>>> b = a[:, 1:3]
>>> b
array([[2, 3],
[5, 6]])
>>> a[1,2] = -1
>>> b
array([[ 2, 3],
[ 5, -1]])
違う配列にしたいときは copy メソッドを使う
>>> c = a[:, 0:2].copy()
>>> c
array([[1, 2],
[4, 5]])
>>> a[0,0]=-10
>>> c
array([[1, 2],
[4, 5]])
*** 配列クラスの下位クラス [#lbc181f8]
- [[Standard array subclasses>http://docs.scipy.org/doc/n...
- [[Masked arrays>http://docs.scipy.org/doc/numpy/referen...
- matrix:繰り返す Matrix オブジェクトのことは忘れよう
- memmap:メモリ上ではなく,ファイル上に配列を確保
- rec:列を数値ではなくラベルで参照できる.あとは普通に n...
- ma:データ本体に加え,その要素が有効かどうかを示すマス...
''イテレータ'':ndarray をイテレータとして使うと,a.ndim ...
** Numpy: Universal functions (ufunc) [#fb691948]
- [[Universal functions (ufunc)>http://docs.scipy.org/doc...
''broadcasting'':"*" や "+" など配列の要素間で2項を演算...
+ 配列の shape が完全に一致
+ 次元数が一致し,各次元で大きさが一致するか,大きさが1
+ 次元数が少ない方の次元の前に大きさ1の次元を加えると上記...
最後の条件は一方がスカラーの場合以外はあまり使わない方が...
>>> a
array([[1, 2],
[3, 4]])
>>> a * 3
array([[ 3, 6],
[ 9, 12]])
2番目の条件を満たすように,明示的に newaxis を入れる方が...
>>> b
array([10, 20])
>>> a * b[np.newaxis, :]
array([[10, 40],
[30, 80]])
>>> a * b[:,np.newaxis]
array([[10, 20],
[60, 80]])
''エラー処理''
- seterr:0除算,オバーフロー,アンダーフロー,不正入力な...
''キャスト規則'':型のキャストルール
- can_cast:二つの型の間でキャストできるかどうか
** [[NumPy: Routines>http://docs.scipy.org/doc/numpy/refe...
*** 配列の生成 [#z4af47d8]
-[[Array creation routines>http://docs.scipy.org/doc/nump...
''基本生成''
- empty, eye, ones, zeros:初期化なし,単位行列,1配列,0...
- empty_like, ones_like, zeros_like:与えた配列と同じ大き...
- (repeat:指定した同じ要素で埋める)
''既存データからの作成''
- asarray:リストとかを ndarray オブジェクトに変換
- frombuffer:下位のデータ構造から生成.[[うまく使うと速...
- fromfunction, fromiter, fromstring:関数出力,イテレー...
- loadtxt:CSV や スペース 区切りのファイルからの読み込み...
''範囲''
- arange:python の range の ndarrayオブジェクト版
- linspace,logspace:等間隔,対数間隔の数列を得る.グラ...
- meshgrid:縦横に等間隔な格子状の配列を作る
''行列生成''
- diag:対角行列
- tri, tril, triu:三角行列
*** 配列の操作 [#a41baf75]
- [[Array manipulation routines>http://docs.scipy.org/doc...
''形状変換''
- reshape:バッファ全体の大きさはそのままで形状を変更する...
- 1次元の配列に要素を並べ替えたビューやコピー
-- ravel:どの軸を優先で並べるか指定できる.指定によって...
-- flat:現在の格納順で1次元の配列に並び替えたビュー
-- ndarray.flatten:ndarray.flat と同じだが,コピーを返す
''転置''
- ndarray.T:2次元以上の行列の転置ビューを返すメソッド.1...
- transpose:転置だが,a.T と違って,転置する次元を指定で...
- swapaxes:軸を交換したビュー.メソッドもある
''次元数の変換''
- at_least1d, at_least2d, at_least3d:それぞれ最低1次元,...
- squeeze:大きさが1の次元を全部除去した配列を返す
- newaxis:横ベクトル a を縦ベクトル a[np.newaxis, :] に...
''結合・連結''
- concatinate:指定した軸で結合
- dstack:第3軸の結合
- hstatck, vstack:第1軸,第2軸の結合だが r_[] や c_[] の...
''分割''
- split, array_aplit:指定した軸で分割
- hsplit, vsplit, dsplit:第1〜3軸で分割
''タイル''
- tile:部分行列の繰り返し行列
- repeat:同じ要素で構成される行列.行ベクトルごとに一様...
''要素の追加・削除''
- delete, insert:部分行列の削除・挿入
- resize:全体のバッファの大きさの変更.メソッドもある.
- unique:行列中にある要素を含む配列を返す.100クラスある...
''要素の再配置''
- fliplr, flipud:左右・上下の反転.というか a[:, ::-1] ...
- reshape:行列の形状の変更.メソッドもある.非常によく使...
*** インデキシング [#y49d3b52]
- [[Indexing routines>http://docs.scipy.org/doc/numpy/ref...
''インデックスの配列の生成''
- c_[], r_[]:列方向や行方向への結合.vstack や hstack よ...
>>> a
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
>>> c_[np.ones(a.shape[0]), a]
array([[ 1., 0., 1., 2., 3.],
[ 1., 4., 5., 6., 7.],
[ 1., 8., 9., 10., 11.]])
- ix_:要素をリストで [[1,1], [3,3]] と指定すると a[1, 1]...
- nonzero(a):非0要素のindexを返す.
nz = np.nonzero(a)
a[nz] += a[nz] **2
みたいにすると疎行列では効率的になる.メソッドもある.ち...
for ix in np.nonzero(a):
a[ix] += a[ix] **2
- where:where(a > 5) とかだと,a の要素が 5より大きな要...
- indices:全要素のindex
-- その他対角要素や,上下の三角行列の要素とかもある
''要素を選択して操作''
- choose:where は bool 値だが,choose は3択以上でも配列...
- diag:対角要素の取り出し,多次元のなかから2次元分の対角...
- select:where で条件が複数書ける
''配列へのデータの代入''
- put:indexの大きさが合っていれば普通の代入と同じだが,...
- putmask:条件を満たしたところだけ代入
- fill_diagonal:対角要素への代入
''イテレータ''
- ndenumarate:引数配列の要素を順番に参照するイテレータ
- ndindex:ndenumerateと違って,配列そのものではなく,形...
- nditer:いっぱい複雑な機能のあるイテレータ
*** データ型の操作 [#k881785c]
- [[Data type routines>http://docs.scipy.org/doc/numpy/re...
dtype型の操作をする.普通に数値計算してるときはあまりお世...
- finfo, iinfo:浮動小数点や整数の最大・最小値などの情報...
print np.finfo(np.float32)
print np.iinfo(np.uint8)
*** 入出力 [#yeaa9371]
- [[Input and output>http://docs.scipy.org/doc/numpy/refe...
''NPY/NPZ形式''
- load, save, savez:npy, npz の専用形式でのファイル入出力
''テキスト形式''
- loadtxt, savetxt:それほど大きくなければ,TSV/CSV も読...
- genfromtxt:欠損値の扱いが特殊な場合
- fromregx:各行のフォーマットを正規表現で書いて,正規表...
- fromstring:文字列から1次元の配列を作る.文字列の split...
''文字列フォーマット''
- array_str, array_repr:print で使うような形式の文字列へ...
''memmapファイル''
- memmap:配列をメモリではなく,ファイル上に確保.大きな...
''テキストのprint形式オプション''
- set_printoptions, get_printoptions:プリントのオプショ...
*** 線形代数 [#be513bc7]
- [[Linear algebra (numpy.linalg)>http://docs.scipy.org/d...
''行列・ベクトルの積''
- dot:内積・行列積の基本.ちょっと細かい点で動作の違う v...
- outer:外積
- tensordot:テンソルドット積
- kron:クロネッカー積
- linalg:matrix_power:行列の指数
''分解''
- linalg.{cholesky, qr, svd}:コレスキー,QR,特異値分解
''固有値・固有ベクトル''
- linalg.eig:固有値と固有ベクトルの計算.他にもいくつか...
''ノルムなど''
- linalg.norm:Lnノルム
- linalg.cond:条件数
- linalg.det, linalg.slogdet:行列式,行列式の自然対数
- trace:トレース
''線形方程式の解と逆行列''
- linalg.solve, linalg.tensorsolve:線形方程式,テンソル...
- linalg.lstsq:最小2乗解,すなわち線形回帰
- linalg.inv, linalg.pinv, linalg.tensorinv:逆行列,擬逆...
''例外''
- linalg.LinAlgError:線形代数関連のpython例外
*** 乱数生成 [#c08965c1]
- [[Random sampling (numpy.random)>http://docs.scipy.org/...
乱数生成には python標準の random もある.こちらの random ...
乱数生成だけなので,確率密度関数や分位点が必要なときは sc...
再現性のある実験やテストをしたいときには,np.random.seed ...
たいていの分布はあるのだが,Bernoulli分布 がなくて困るこ...
np.random.binomial(1, p, size=100)
Pr[x=1 | y] を長さ 2 の配列 p[y] に入れているとする.y の...
np.random.binomial(1, p[y])
''順列''
- shuffle:配列の内容の位置をランダムに入れ替え
- permutation:多次元配列のときは,第1軸の方向だけでラン...
*** ソート,検索,計数 [#j6797488]
[[Sorting, searching, and counting>http://docs.scipy.org/...
''ソート''
- sort:リストのソートを配列にしたもの.メソッドもある.
- argsort:ソートした内容ではなく,index を返す
- lexsort, msort, sort_comprex なども
探索
- argmax, argmin:最大・最小値になるindexを返す.
- nanargmax, argmin:NaN を無視するargmax, argmin
- nonzero, argwhere:非ゼロ要素を返すことになっているが,...
- where:条件を満たす要素を返す.choose のような代入もで...
''計数''
- count_nonzero:非ゼロ要素の数を返す
*** 論理関数 [#q0f5fdb7]
- [[Logic functions>http://docs.scipy.org/doc/numpy/refer...
''真理値のテスト''
- all:全称限量子.配列の要素が全て真のとき真を返す.
- any:存在限量子.配列の要素が一つでも真のとき真を返す.
''配列の内容チェック''
- isfinite, isinf, isnan, isneginf, isposinf:有限,無限...
''行列の型チェック''
- 複素数やスカラーなど配列の型をチェック
''論理演算''
- logical_and, logical_or, logical_not, logical_xor:普通...
''比較''
- allclose:数値演算ではうまく等価にならない場合もあるの...
- array_equal, array_equiv, greater, greater_equal, less,...
*** 二値演算 [#fbab4456]
- [[Binary operations>http://docs.scipy.org/doc/numpy/ref...
''要素ごとのビット演算''
- bitwise_and, bitwise_or, bitwise_xor, invert:ビット論...
- left_shift, right_shift:ビットシフト
''ビットのパック''
- packbits, unpackbits:0/1 値の配列を uint8型 の配列に変...
*** 統計 [#oad250d3]
- [[Statistics>http://docs.scipy.org/doc/numpy/reference/...
分布の統計量などは sp.stats を参照のこと.
''極値''
- amax, amin, ptp:軸にそった最大値,最小値,(最大 - 最小)
- nanmax, nanmin:不定値を除いた最大値,最小値.高速な bo...
''平均と分散''
- mean:算術平均
- average:重み付きが可能な平均
- median:中央値
- std:標準偏差
- var:分散
''相関''
- corrcoef:相関係数
- cov:共分散行列
''ヒストグラム''
- histogram, histogram2d, histogramdd:1次元,2次元,3次...
pxy = np.histogram2d(x, y, bins=(k, k), range=((0, k), (...
pxy = pxy / np.sum(pxy)
- bincount:histogram と同様の使い方ができる
- digitize:指定したビンで離散値に変換する
*** 数学関数 [#x88c5a1a]
- [[Mathematical functions>http://docs.scipy.org/doc/nump...
digamma や erf などもっと高度な数学関数は sp.special を参...
''三角関数''
- sin, cos, tan, arcsin, arccos, arctan, arctan2:mathパ...
- degrees, radians, deg2rad, rad2deg:ラジアンと度の相互...
- unwrap:ラジアンを -2π〜2π に収まるまで 2π を引く
''双曲線関数''
- sinh, cosh, tanh, arcsinh, arccosh, arctanh:mathパッケ...
''まるめ''
- around, rint:普通のまるめ
- floor:入力値以下の最大整数
- ceil:入力値以上の最小整数
- fix:0に近い方の整数
- trunc:少数部分の削除
''和・積・差''
- prod, sum:和や積.軸を指定できる.x と y の頻度が入っ...
>>> n
array([[ 2., 3.],
[ 4., 2.]])
>>> n / np.sum(n, axis=1)[:, np.newaxis]
array([[ 0.4 , 0.6 ],
[ 0.66666667, 0.33333333]])
- cumprod, cumsum:累積積,累積和
- nansum:不定値以外の和.bottleneck もパッケージを参照.
- diff, ediff1d, gradient:配列間の差や勾配
- cross:クロス積
- trapez;台形則での数値積分
''指数・対数関数''
- exp, expm1, exp2:配列処理対応の exp, exp(x) - 1, 2^x
- log, log10, log2, log1p:自然対数,常用対数,底が2の対...
- logaddexp, logaddexp2:exp(sum(log))
''その他の数学関数''
- i0:第1種,次数0のBessel関数.他のBessel関数は sp.speci...
- sinc:sin(πx) /(πx)
''浮動小数点''
- signbit:0以上なら真
- copysign:符号のコピー
- frexp, ldexp:指数表現部分と数値部分の分離統合
''四則演算''
- add, subtract, multiply, divide, negative:要素ごとの四...
- reciprocal, power:逆数,累乗
- true_division, floor_division:整数同士の除算.実数を返...
- fmod, mod, reminder:モジュロ演算だが負数の扱いとかが微...
- modf:少数部分と整数部分に分ける
''複素数''
- real, imag:実数と虚数部分
- angle:角
- coonj:複素共役
''その他''
- convolve:たたみ込み
- clip:指定した区間に納める
- sqrt, square:正実数だけの平方根と複素数にも対応した平...
- fabs, absolute:実数用と複素数用の絶対値
- sign:負,0,正のとき -1, 0, +1
- maximum, minimum:要素を比較して大きい方・小さい方を返す
- interp:線形補間
*** 関数プログラミング [#w5f341b1]
- [[Functional programming>http://docs.scipy.org/doc/nump...
- apply_along_axis:関数を要素の軸に沿って適用する.特徴...
apply_along_axis(sigmoid, 1, x, w)
関数の返す次元が100ぐらいまでは,リスト内包表記,それ以降...
[sigmoid(x[i, :], w) for i in xrange(x.shape[0])]
- apply_over_axes:複数の軸に渡って関数を定義する.頻度を...
apply_over_axes(np.sum, n, [1, 2]) / np.sum(n)
- vectorize:スカラー用の関数があるとき,それをベクトル対...
print numpy.vectorize(lambda x: x*2)(numpy.arange(1, 3))...
- frompyfunc:pythonの関数をベクトル対応に
- piecewise:select と似ているが,値の選択だけでなく,関...
*** 多項式 [#w74498d6]
- [[Polynomials>http://docs.scipy.org/doc/numpy/reference...
Polynomial, Legendre などいくつかの級数展開した式のクラス...
- poly1d:C_n x^n + C_{n-1}x^{n-1} +…+ C_1 x + C_0 や (x ...
- polyval:定義した多項式を評価
- poly:指定した根をもつ多項式の係数の列
- roots:多項式の根
- polyfit:多項式へのあてはめ
- polyder:導関数
- polyint:不定積分
- polyadd, polysub, polymul, polydiv:四則演算
*** 集合関数 [#sf1a8248]
- [[Set routines>http://docs.scipy.org/doc/numpy/referenc...
- unique:配列中に存在する値の配列を返す.疎な値しか取ら...
- intersect1d, union1d, setxor1d, setdiff1d:積集合,和集...
- in1d:最初の集合に含まれる各要素について,2番目の集合に...
*** numpy専用ヘルプ関数 [#b3574da1]
- [[Numpy-specific help functions>http://docs.scipy.org/d...
- lookfor:関数のdocstringの検索
- info:関数,クラス,モジュールの説明
- source:ソースの表示
*** その他のルーチン [#n1ed4411]
''離散フーリエ変換''
- [[Discrete Fourier Transform (numpy.fft)>http://docs.sc...
libfft を呼び出す離散フーリエ変換の関数群.scipy があれば...
''日時処理関数''
- [[Datetime Support Functions>http://docs.scipy.org/doc/...
営業日かどうかを調べる
''金融関数''
- [[Financial functions>http://docs.scipy.org/doc/numpy/r...
金利関連計算
''窓関数''
- [[Window functions>http://docs.scipy.org/doc/numpy/refe...
関数や系列に掛け合わせる窓関数
''浮動小数点エラー処理''
- [[Floating point error handling>http://docs.scipy.org/d...
オーバーフローなどの数値演算上のエラーがあるとき例外にす...
''マスク付き配列''
- [[Masked array operations>http://docs.scipy.org/doc/num...
通常の配列用の関数をマスク付き配列用にしたもの.マスクの...
''雑多な関数''
- [[Miscellaneous routines>http://docs.scipy.org/doc/nump...
メモリ領域(バッファ)の確保など
''テスト用''
- [[Test Support (numpy.testing)>http://docs.scipy.org/do...
unittest や doctest などを書くときに使う関数
''自動型適応する数学関数''
- [[Mathematical functions with automatic domain (numpy.e...
複素数を使うときに型変換が通常のものと異なる数学関数
''scipyで高速化されうる関数''
- [[Optionally Scipy-accelerated routines (numpy.dual)>ht...
固有値・逆行列,フーリエ変換,Bessel関数の i0 などは scip...
''文字列操作''
- [[String operations>http://docs.scipy.org/doc/numpy/ref...
通常の文字列処理関数をベクトル処理できるように拡張
** [[SciPy>http://docs.scipy.org/doc/scipy/reference/]] [...
''クラスタリング''
- [[Clustering package (scipy.cluster)>http://docs.scipy....
k-means法 の sp.cluster.vq と凝集型階層的クラスタリングの...
''定数''
- [[Constants (scipy.constants)>http://docs.scipy.org/doc...
黄金比,光速,重力定数,アボガドロ数など様々な定数
''フーリエ変換''
- [[Fourier transforms (scipy.fftpack)>http://docs.scipy....
scipy があれば,numpy のものを呼び出してもこちらが使われ...
''数値積分''
- [[Integration and ODEs (scipy.integrate)>http://docs.sc...
関数や数列から数値積分を行う.
''補間''
- [[Interpolation (scipy.interpolate)>http://docs.scipy.o...
numpy は interp は線形1次だけだが,多次元や,多項式・スプ...
''入出力''
- [[Input and output (scipy.io)>http://docs.scipy.org/doc...
matlab, matrix market, wav, arff, netcdf の入出力
''線形代数''
- [[Linear algebra (scipy.linalg)>http://docs.scipy.org/d...
numpyより関数の種類は増えている.scipy があれば,numpy の...
''その他の関数''
- [[Miscellaneous routines (scipy.misc)>http://docs.scipy...
''n次導関数,階乗など''
- [[Multi-dimensional image processing (scipy.ndimage)>ht...
画像処理.フィルタ処理など簡単なもの.より高度なものは op...
''直交距離回帰''
- [[Orthogonal distance regression (scipy.odr)>http://doc...
説明変数が独立でない場合の回帰
''最適化と求根''
- [[Optimization and root finding (scipy.optimize)>http:/...
最適化関数群だが,共役勾配法やニュートン法など基本的なも...
''信号処理''
- [[Signal processing (scipy.signal)>http://docs.scipy.or...
たたみ込み,Bスプライン,ウェーブレット,各種フィルタ処理.
''疎行列''
- [[Sparse matrices (scipy.sparse)>http://docs.scipy.org/...
- [[Sparse linear algebra (scipy.sparse.linalg)>http://do...
ほとんどの要素が 0 の疎行列を処理する.あまりよくないとも...
''空間アルゴリズムとデータ構造''
- [[Spatial algorithms and data structures (scipy.spatial...
近傍点の検索を高速化する kd-木 や,Delaunay三角形分割など
''距離計算''
- [[Distance computations (scipy.spatial.distance)>http:/...
ベクトル間の距離だけでなく,距離行列をまとめて計算できた...
''特殊関数''
- [[Special functions (scipy.special)>http://docs.scipy.o...
numpy は初等関数だけだが,こちらは Bessel関数,ガンマ関数...
- ディガンマ関数は psi 関数という名前になってる
''統計関数''
- [[Statistical functions (scipy.stats)>http://docs.scipy...
numpy は乱数生成だけだが,様々な確率分布の密度関数,分位...
ページ名: