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:繰り返し回数を指定する
[1, 2, 3, 1, 2, 3, 1, 2, 3]のような繰り返しの作り方
● np.tile(a,b), a:数列,b:繰り返しをする回数
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])
この記事が気に入ったらサポートをしてみませんか?