スクリーンショット_2019-07-16_10

Numpy memo (随時更新)

Numpyで今まで使ったものを記録(随時更新)


一次元配列のarrayを二次元配列にして指定の数に分割する:np.array_split

a = np.array([1,2,3,4,5,6,7,8,9])を二次元に変換後,3分割して
np.array([[1,2,3],[4,5,6],[7,8,9]])にする

aをn分割する際は np.array_aplit(a, n)
三分割なら np.array_split(a,3)

np.arange(start,end,step) で等差数列を作る

'end' だけ指定すれば,0からend-1までの数を1つづつ並べる

In [9]: import numpy as np                                                                                                                  

In [10]: a = np.arange(12)                                                                                                                  

In [11]: a                                                                                                                                  
Out[11]: array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])

repeat()によるのような繰り返しの作り方

● [0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3...]のような繰り返しを作成する
● repeat(n)  n:繰り返し回数を指定する

スクリーンショット 2020-05-12 11.01.53

[1, 2, 3, 1, 2, 3, 1, 2, 3]のような繰り返しの作り方

● np.tile(a,b), a:数列,b:繰り返しをする回数

スクリーンショット 2020-05-12 11.11.50

reshape()で行列に変換

上記のaを4行3列に変換

In [13]: a_r4c3 = a.reshape(4,3)                                                                                                            

In [14]: a_r4c3                                                                                                                             
Out[14]: 
array([[ 0,  1,  2],
      [ 3,  4,  5],
      [ 6,  7,  8],
      [ 9, 10, 11]])

np.linspace(start, stop, number): 等間隔に数値を生成

np.linspace(1, 10, 20): 1から10まで20個の数値を生成する

In [1]:import numpy as np
In [2]:np.linspace(1,10,20)
Out[2]: 
array([ 1.        ,  1.47368421,  1.94736842,  2.42105263,  2.89473684,
       3.36842105,  3.84210526,  4.31578947,  4.78947368,  5.26315789,
       5.73684211,  6.21052632,  6.68421053,  7.15789474,  7.63157895,
       8.10526316,  8.57894737,  9.05263158,  9.52631579, 10.        ])

np.linspace(1,10)のように個数を指定しないと,デフォルト値の50個の数値が生成される。 数式から直線のなだらかなグラフを書く際などに一定間隔でxの値を作れるので便利。

np.random.randint(start,stop, number): n個の整数の乱数を生成

1から10までの10個の整数の乱数を生成

In [3]: np.random.randint(1,10, 10)                                                                                                        
Out[3]: array([4, 7, 8, 5, 4, 9, 2, 6, 8, 9])

np.random.normal(mean, sd, number):平均とsdを指定してn個の乱数を生成 

平均が10で標準偏差が2の乱数を10個生成

In [2]: np.random.normal(10, 2, 10)                                                                                                        
Out[2]: 
array([ 7.79349911, 12.2969153 ,  8.00596042,  7.79832667,  8.85410586,
       6.33752947,  8.42655444,  8.06138211,  8.30757351, 10.0145124 ])

np.random.seed(seed=一定の値)

一定の値をシードとして指定することで,生成する乱数を固定(再現することが可能)できる。

In [6]: np.random.seed(seed=42)   # seed = 42 指定                                                                                      

In [7]: np.random.normal(50,5,10)                                                                                       
Out[7]: 
array([52.48357077, 49.30867849, 53.23844269, 57.61514928, 48.82923313,
      48.82931522, 57.89606408, 53.83717365, 47.65262807, 52.71280022])

In [8]: np.random.normal(50,5,10)  # seed 指定なし                                                                                     
Out[8]: 
array([45.68888357, 50.0824055 , 57.82555545, 47.65439962, 48.03849634,
      54.083335  , 50.38187646, 49.49953446, 58.1187856 , 43.31729176])

In [9]: np.random.seed(seed=42)   # seed = 42 指定                                                                                      

In [10]: np.random.normal(50,5,10)                                                                                      
Out[10]: 
array([52.48357077, 49.30867849, 53.23844269, 57.61514928, 48.82923313,
      48.82931522, 57.89606408, 53.83717365, 47.65262807, 52.71280022])

この記事が気に入ったらサポートをしてみませんか?