Menu

numpyの用途と関数リスト

2018-10-06 - Numpy

numpyを使う意義

Pythonは一応は動的型付け言語なので、大量のデータを扱う時には型付け言語より遅くなる。

NumPyは型付きの多次元配列オブジェクトと、その配列に対する多数の演算関数や操作関数を提供し、この問題を解決しようとしている。
NumPyの内部はC言語で実装されているので速い。


numpyで使える関数


情報参照源

公式情報としては
https://docs.scipy.org/doc/numpy/reference/index.html
を参照して下さい。


Numpy配列の作り方

a = array([[1, 2, 3],
       [4, 5, 6]])

のデータに対して操作をする。


既にある値の操作

dtype

要素の型を返す

In [27]: a.dtype                                                                                                                                                                                               
Out[27]: dtype('int64')

ndim

行数を返す

In [28]: a.ndim                                                                                                                                                                                                
Out[28]: 2

shape

行列数を返す

In [30]: a.shape                                                                                                                                                                                               
Out[30]: (2, 3)

size

要素数を返す

In [31]: a.size                                                                                                                                                                                                
Out[31]: 6

itemsize

要素のbyteサイズを返す

In [33]: a.itemsize                                                                                                                                                                                            
Out[33]: 8

data

メモリのどこにあるか。インデックスでアクセスするので通常は使わない

In [34]: a.data                                                                                                                                                                                                
Out[34]: 

データ作成

arrange

指定された範囲で昇順で値を生成する。
上昇幅の指定も可能。

In [45]: np.arange( 10, 30, 5 )                                                                                                                                                                                
Out[45]: array([10, 15, 20, 25])

array

ndarrayを作る。

In [40]: np.array( [ [1,2], [3,4] ])                                                                                                                                                                           
Out[40]: 
array([[1, 2],
       [3, 4]])

eye

指定されたサイズの単位行列を作る。
identityと違い、但し、正方行列でなくて持つ開ける。

In [57]: np.eye(3,4)                                                                                                                                                              
Out[57]: 
array([[1., 0., 0., 0.],
       [0., 1., 0., 0.],
       [0., 0., 1., 0.]])

empty

値は入っているがメモリの状態などに依存した、実はランダムに生成された値

In [44]: np.empty( (3,4) )                                                                                                                                                                                     
Out[44]: 
array([[1., 1., 1., 1.],
       [1., 1., 1., 1.],
       [1., 1., 1., 1.]])

full

指定されたサイズの行列を、指定された値を持つ要素で作る。

In [51]: np.full((2, 3), 10)                                                                                                                                                                                   
Out[51]: 
array([[10, 10, 10],
       [10, 10, 10]])

identity

指定されたサイズの正方行列の単位行列を作る

In [58]: np.identity(3)                                                                                                                                                           
Out[58]: 
array([[1., 0., 0.],
       [0., 1., 0.],
       [0., 0., 1.]])

linspace

指定した要素数の配列を、指定された範囲で作る

In [53]: np.linspace(1,5, 10)                                                                                                                                                                                  
Out[53]: 
array([1.        , 1.44444444, 1.88888889, 2.33333333, 2.77777778,
       3.22222222, 3.66666667, 4.11111111, 4.55555556, 5.        ])

ones

指定されたサイズの行列を要素の値0で作る。

In [41]: np.ones( (3,4) )                                                                                                                                                                                      
Out[41]: 
array([[1., 1., 1., 1.],
       [1., 1., 1., 1.],
       [1., 1., 1., 1.]])

random.binormial

二項分布。例えば確率pでコインをn回投げて表が出る個数

In [112]: np.random.binomial(n=100000, p=0.5)                                                         
Out[112]: 49951

random.rand()

0-1の乱数を作る。
出力の行列サイズを指定可能。

In [69]: np.random.rand(2,3)                                                                          
Out[69]: 
array([[0.97713392, 0.69803325, 0.56930354],
       [0.8718433 , 0.12167784, 0.66916584]])

random.randint()

指定された範囲で整数の乱数を作る

In [154]: np.random.randint(10)                                                       
Out[154]: 7

random.randn()

標準正規分布 (平均0, 標準偏差1)の乱数を作る。
出力の行列サイズを指定可能。

In [83]: np.random.randn(2,3)                                                                         
Out[83]: 
array([[-0.79653347,  0.40785915,  2.19687402],
       [-1.08740025, -0.79903903,  0.10621633]])

random.normal()

指定された平均、標準偏差の正規分布に基づく乱数を作る。

例えば、平均50、標準偏差10の乱数の生成。

In [88]: np.random.normal(50,10)                                                                      
Out[88]: 48.26451023908396

zeros

指定されたサイズの行列を要素の値0で作る。

In [36]: np.zeros( (3,4) )                                                                                                                                                                                     
Out[36]: 
array([[0., 0., 0., 0.],
       [0., 0., 0., 0.],
       [0., 0., 0., 0.]])