NumPyとは何なのか? 基本的なモジュールとメソッドをまとめた

いきなりで何だけども、このサイトがとてもよくまとめてくれている。

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]]])