いきなりで何だけども、このサイトがとてもよくまとめてくれている。
https://deepage.net/features/numpy/
https://note.nkmk.me/python-numpy-random/
基本的にはこっち見たほうがわかりやすいかも。。。
とはいえ、リンクの紹介だけでは芸もないので、私なりにNumpyについて、まとめてみたいと思う。
気が向いたときに拡張させていきたい。
NumPyとは?
NumPyとは、Pythonで多次元配列をサポートするための、数値演算ライブラリのこと。
Pythonではとにかく、行列やベクトルなどを中心に扱うことが多く、これらの配列の基本的な操作を扱えるようにまとめたものが、Numpyということになる。
Numpyの大きな特徴は高速な演算スピード。Numpyの中身はC言語で作られており、Pythonでラッピングされているようなイメージで、C言語のスピードと、エンジニアの扱いやすさのいいとこ取りをしたようなものらしい。※1
python標準のリストやタプルを使った演算よりも高速に処理できる特徴がある。
※1:オライリー「入門Python3」 P470
NumPyの使い方
以下のように呼び出す。
import numpy as np
NumPyを描画するためのライブラリ:matplotlib
NumPyのモジュール、メソッド一覧
標準モジュール
array()
arrange()
zeros()
ones()
reshape()
randomモジュール
random.random()
random.rand()
random.randn()
NumPyで乱数、無作為な値を作る
randomモジュール
random:いろいろとランダムに数字を生成したいときに使う。randam.rand()のように、メソッドを組み合わせて使う。
random.random()
0.0から1.0未満の数字を作る
random.rand()
0.0から1.0未満の数字を作る
random.randn()
平均0、標準偏差1の正規分布を作る
random.random()
0.0から1.0までの無作為な数値を生成する。
>>> np.random.random() 0.31511544273412184
オプションで引数に指定した数の数値が生成される。
1次元の配列しか作れない。
>>> np.random.random(2) array([0.77705377, 0.14190286])
random.rand()
0.0から1.0までの無作為な数値を生成する。
多次元配列も作ることができる。random()より使い勝手がいい。
>>> np.random.rand(2) array([0.49365833, 0.89536755]) >>> np.random.rand(2,3) array([[0.18980242, 0.52515173, 0.74957639], [0.07900338, 0.94492949, 0.35652152]]) >>> np.random.rand(2,3,4) array([[[0.19773981, 0.00267918, 0.70426918, 0.1558807 ], [0.62390315, 0.48911341, 0.99980377, 0.91617908], [0.44252618, 0.11789416, 0.38011434, 0.67133733]], [[0.26213401, 0.17866741, 0.69009722, 0.38641474], [0.57318848, 0.3974358 , 0.33818651, 0.21394663], [0.44247182, 0.74836659, 0.96981913, 0.23717117]]])
random.randn()
平均0、標準偏差1になる正規分布を作る。
多次元配列も作ることができる。
>>> np.random.randn(2) array([0.6528302, 0.2752241]) >>> np.random.randn(2,3) array([[-0.47196705, 1.28902107, 1.05753346], [ 1.06013538, 0.9659483 , -1.70863708]]) >>> np.random.randn(2,3,4) array([[[ 0.94526171, -0.62501629, -1.11422284, 0.42929188], [ 1.50679977, 0.13752693, -0.13924463, 0.04427589], [ 1.23397845, -1.4350373 , 1.28632616, 1.63031074]], [[ 2.30749556, 1.07699258, -0.70825632, 0.75412392], [ 0.20825063, 1.8240428 , 0.93815537, -0.27774273], [ 1.23167313, -1.20767651, -1.25185445, 0.90762967]]])