スポンサーリンク

【Python NumPy random rand】ベクトル・行列の生成・初期化方法(7):1次元配列(ベクトル)・乱数数列の生成方法(random rand randint seed)について、サンプルコードとともに、サクッとわかりやすくまとめました【Python 入門】

スポンサーリンク
python numpy np random rand randint seed 2 numpy
スポンサーリンク
スポンサーリンク
スポンサーリンク

NumPy は、Python で高速計算やデータ加工をスムーズに行うためのライブラリです。

ディープラーニングなどの人工知能や機械学習、

時系列分析など、データ分析や統計解析などでも頻繁に使われます。

NumPy を使いこなすことで、

複雑な演算を、サクッと実装でき、プログラミングが加速させることができます。

NumPyは、高次元データを扱うことが多いのですが、

  • まずは1次元で試す

というステップを踏むのが有効です。

いきなり高次元データを扱うよりも、ミスが減り、デバッグを容易にしてくれます。

試しの1次元データでの計算には、

わかりやすい1次元データを使うのがより有効です。

 

1次元データの生成には、これまで

  • 整数列を生成する方法(初期化)

を2話に分けて、ご紹介しました↓

【Python NumPy arange】ベクトル・行列の生成・初期化方法(5):1次元配列(ベクトル)・数列の生成方法(range, arrange)について、サンプルコードとともに、サクッとわかりやすくまとめました【Python 入門】

 

【Python NumPy linspace】ベクトル・行列の生成・初期化方法(6):1次元配列(ベクトル)・数列の生成方法(linspace, arrange)について、サンプルコードとともに、サクッとわかりやすくまとめました【Python 入門】

 

これらは、基本的に整数や実数の規則的な数列の生成を行えます。

 

しかし、規則的な数列でない、ランダムなデータが必要な場合も多くあります。

例えば、人工知能やデータ分析、統計解析などです。

ランダムな値は、「乱数」とも呼ばれます。

特に、ある範囲の値が出る確率が同じ(一様)な状態から生成される乱数を、「一様乱数」と呼びます。

 

 

そこで本記事では、

データ分析や人工知能、統計解析などでも役立つ

NumPy での一様乱数の生成、初期化の方法

  • np.random.rand
  • np.random.randint

について、サクッと、わかりやすく、まとめます。

スポンサーリンク

【Python NumPy random rand】ベクトル・行列の生成・初期化方法(7):1次元配列(ベクトル)・乱数数列の生成方法(random rand randint seed)について、サンプルコードとともに、サクッとわかりやすくまとめました【Python 入門】

「NumPy」で浮動小数型の乱数の生成・初期化:(np.random.rand)

np.random.rand( ) で、浮動小数型の乱数を1個、生成できる

Python numpy np random rand randint 1

np.random.rand(  ) を使うと、

  • 0以上1未満の浮動小数点型の乱数を1個、生成

することができます。

 

乱数なので、毎回違う値が生成されます。

確かめてみましょう。

Python numpy np random rand randint 2

確かに、3回とも違う乱数が生成されています。

 

 

np.random.rand(個数) で、実数乱数を個数個、生成できる

Python numpy np random rand randint 3

乱数を複数個生成したい場合には、

np.random.rand( 個数 )

として生成させることができます。

上の例では、np.random.rand(5) として、

5個の乱数(0以上1未満の範囲)を生成していることがわかります。

 

 

np.random.rand(行数、列数) で、実数乱数の行列を生成できる

Python numpy np random rand randint 4

np.random.rand(3, 2)のように、2つの数字を指定すると、

生成した乱数の行列を生成できます。

3が行数、2が列数に対応します。

ちなみに、行列の要素が乱数でなく、

  • すべて0の行列
  • すべて1行列
  • 単位行列

を生成・初期化する方法は、以下の記事でまとめています。

【Python NumPy】ベクトル・行列の生成・初期化方法(1):ゼロ行列 zeros、zeros_likeについて、サンプルコードとともに、サクッと、わかりやすく、まとめました【Python 入門】

 

【Python NumPy】ベクトル・行列の生成・初期化方法(2):すべて要素1の行列 ones、ones_likeについて、サンプルコードともに、サクッと、わかりやすく、まとめました【Python 入門】

 

【Python NumPy】ベクトル・行列の生成・初期化方法(3):単位行列の生成( identity、eye)について、サンプルコードとともに、サクッとわかりやすくまとめました【Python 入門】

 

 

 

これまでは、毎回違う乱数が生成されていました。

毎回同じ乱数がほしい場合もあります。

そこで同じ乱数を生成する方法をご紹介します。

 np.random.seed (特定の値)で、毎回同じ乱数を生成できる

Python numpy np random rand randint 5

同じ乱数は、2段階で生成できます。

  • (1),  np.random.seed(値)
  • (2), np.random.rand( )

(1)のnp.random.seed の値を同じ値にセットすることで、

(2)のnp.random.randで同じ値を生成できます。

In[12]で np.random.seed(3)として、

値を3にセットしています。

その後、In[13] でnp.random.rand(5) で乱数を生成しています。

もう1度、同じことをIn[15]とIn[16] でやってみると、

Out[13] とOut[16] のように、同じ乱数が生成されていることがわかります。

ただし注意点があります。

np.random.seed(値)の効果は、1回だけです。

1度 乱数を生成させたら、効果はなくなります。

実際、In[16] に続けて、In[17]で乱数を生成させると、

Out[17]のように、それまでとは異なる乱数が生成されています。

なので、同じ乱数を生成させたいときには、

  • 同じseed の値をセットして乱数生成

これをセットで繰り返す必要があるわけです。

 

 

ここまでは、0以上1未満の範囲で乱数を生成していました。

それ以外の範囲の乱数を生成することができます。

乱数の値の範囲は自分で指定できる

Python numpy np random rand randint 6

例えば、生成したい乱数の範囲が、

4以上5未満の値

で生成したいとします。

この場合、In[22]のように、

(5-4)×np.random,rand()+4

として生成します。

Out[21][22][23]のように、確かに、4以上5未満の乱数が生成されています。

 

もう1つ例を挙げてみます。

10以上20未満の乱数を生成させたいなら、

以下のようにすればオッケーです。

Python numpy np random rand randint 7

 

この場合にも、先にnp.random.seed( ) をセットすることで

同じ乱数を生成することができます。

Python numpy np random rand randint 8

 

複数個の乱数を生成したいなら、

np.random.rand( 個数 )

np.random.rand(行数、列数)

のようにすればオッケーです

Python numpy np random rand randint 9

 

 

 

ここまでは、浮動小数型の乱数の生成方法でした。

場合によては、整数型の乱数を生成させたいこともあるかと思います。

np.random.randint( ) で、整数の一様乱数を生成できる

Python numpy np random rand randint 10

np.random.randint(整数) を使うことで、

0以上整数未満の範囲の整数の乱数を1個生成できます。

np.random.randint(5) では、

0以上5未満の範囲の整数(0, 1, 2, 3, 4)のどれかをランダムに生成することができます。

 

 

 

 

Python numpy np random rand randint 12

np.random.randint(  )で、0スタート以外の範囲の整数乱数を生成する

0スタート以外の範囲の整数乱数を生成させることもできます。

In[49]のように、

np.random.randint(5,8)

とすることで、5以上8未満の整数(5、6、7)のどれかを1個生成させることができます。

 

np.random.randint(  )で、複数個の整数乱数を生成する(size = 個数)

整数乱数も複数個生成することができます。

In[46] の np.random.randint(5, 8, size=3) の

size = 3

を指定することで、3個生成させることができます。

 

np.random.randint(  )で、整数乱数の行列を生成する(size = (行数, 列数))

整数乱数の行列を生成することができます。

In[47]の np.random.randint(5, 8, size=(3,2)) の

size = (3, 2)

を指定することで、3行2列の整数乱数行列を生成することができます。

 

 

 

np.random.randint(  ) と np.random.rand( ) の違い

  • np.random.randint (値)

の値の意味は、範囲の最大値になります。

それに対して、浮動小数点型を生成する

  • np.random.rand(値)

の値の意味は、値の個数だけ乱数を生成するという、個数の意味になります。

これらの違いを気をつけておきましょう。

 

np.random.randint( ) とnp.random.rand( ) の違いとしては、もう1つ挙げておきますね。

Python numpy np random rand randint 11

np.random.randint( ) では、かっこの中には数値を入れる必要があります。

数値を入れないと上のようなエラーが出ます。

(”少なくとも1つの引数を入れましょう”とエラーが出ています)

それに対して、

np.random.rand( )では、値を入れなければ、

0以上1未満の範囲で、浮動小数点型の乱数が1つ返されます。エラーにはなりません。

 

bサイン

 

というわけで、本記事では、

データ分析や人工知能、統計解析などでも役立つ

NumPy での一様乱数の生成、初期化の方法

  • np.random.rand
  • np.random.randint

について、サクッと、わかりやすく、まとめました。

 

 

次の第8話では、確率分布にしたがった乱数の生成方法について、サクッと、わかりやすく解説しています。

統計解析やデータ分析などをやってみたい方は特に必見の記事となっています↓

【Python NumPy random randn normal】ベクトル・行列の生成・初期化方法(8):正規分布にしたがった乱数の生成・初期化方法(random randn normal)について、サンプルコードとともに、サクッとわかりやすくまとめました【Python 入門】

 

 

 

こちらもございます↓

スポンサーリンク
スポンサーリンク
スポンサーリンク
スポンサーリンク
スポンサーリンク
error: Content is protected !!
タイトルとURLをコピーしました