※この記事にはプロモーションが含まれています。

16. NumPyでベクトル・行列計算

NumPy入門!randomによる乱数の自動生成

更新日:

またデータ分析や機械学習では、ランダムな数値を含む配列の作成も必要になる時があります。NumPyではこれらの配列も自動作成する方法がいくつかあります。

 

動画教材紹介私(清水 義孝)が作成したコース「Pythonによるビジネスに役立つWebスクレイピング」(Udemyへのリンク)が発売中!
発売数9,000本突破を記念して、今だけ期間限定で87%オフの大セール中!!!

NumPyでの一様な乱数の自動生成(random.rand)

random.randで、0〜1の一様な乱数を自動生成することができます。また引数を指定すれば、指定された数の乱数を生成することができます。

numpy.random.rand(出力件数)

 

まず初めに1個のランダムな数値を作成してみます。

In [1]: np.random.rand()
Out[1]: 0.2981253026948321

 

次に10個のランダムな数値で構成される配列を作成してみましょう。

In [2]: np.random.rand(10)
Out[2]: array([-0.30269993, -0.93349567, 0.35675231, -0.08893609, -1.48624833,
                      0.16062229, -0.32005524, -1.06643131, -0.65708759, 0.12498622])

 

ランダムな数値で3×4行列を作成する場合、引数に3,4を指定します。

In [3]: np.random.rand(3,4)
Out[3]: array([[-0.91843896, -0.25350911, -1.28415095, 0.76946882],
                      [ 0.20152048, 1.42848062, 0.61080922, -0.60720251],
                      [ 1.29016664, 0.35683667, -1.07647741, -0.71999436]])

 
 
 

NumPyでの標準正規分布に従う一様な乱数の自動生成(random.randn)

random.randnで、平均が0で標準偏差が1の標準正規分布に従う0〜1の一様な乱数を自動生成することができます。

numpy.random.randn(出力件数)

 

また平均、分散を指定したい場合は、normalを利用します。

numpy.random.normal(平均, 分散, 出力件数)

引数は省略することもできます。その場合、平均は0.0、分散は1.0、出力件数は1件で出力されます。

 

標準正規分布に従う10個の乱数で構成される配列を作成します。

In [4]: np.random.randn(10)
Out[4]: array([-0.6572115 , 0.41905626, -0.02836741, -0.07100919, 1.97248285,
                      2.25031808, 0.46432126, -0.46028787, 1.37601119, 1.6032506 ])

 

平均が50で分散が10の正規分布に従う乱数を10個出力してみます。

In [5]: np.random.normal(50, 10, 10)
Out[5]: array([ 46.82250514, 60.4098507 , 46.56665573, 46.03400171,
                      55.71524254, 44.10703383, 43.9838072 , 55.24751182,
                      48.81316645, 52.48095133])

 
 
 

動画教材紹介私(清水 義孝)が作成したコース「Pythonによるビジネスに役立つWebスクレイピング」(Udemyへのリンク)が発売中!
発売数9,000本突破を記念して、今だけ期間限定で87%オフの大セール中!!!

NumPyでの指定範囲の整数の乱数自動生成(random.randint)

指定した範囲の整数の乱数を作成する場合、random.randintを利用します。

numpy.random.randint([開始値,] 終了値 [, 出力件数])

開始値 〜 終了値までの間で、出力件数分の整数を自動生成することができます。

出力件数はタプルで指定することもでき、その場合は、指定された形式の配列を作成します。

開始値、出力件数は省略することも可能です。その場合は、開始値は0から、出力件数は1件とみなされます。

また終了値はインデックスと同様、その数値は含まれません。

 

1~99までの間の整数を10件出力してみましょう。

In [6]: np.random.randint(1, 100, 10)
Out[6]: array([48, 32, 29, 2, 93, 11, 50, 16, 82, 13])

 

1~99までの間の整数で3×4行列を出力してみましょう。

In [7]: np.random.randint(1, 100, (3,4))
Out[7]: array([[2, 43, 67, 89],
                      [ 91, 67, 28, 71],
                      [ 55, 72, 82, 7]])

 
 
 

NumPyでの乱数の固定(random.seed)

乱数を用いる分析や処理において、再現性が必要な場合など、発生させる乱数をあらかじめ固定したい場合があります。その場合にseedを用いると、発生させる乱数を固定することができます。

numpy.random.seed(整数)

引数に整数を指定することで、同じ整数を指定した場合、同じ乱数が生成されます。

 

シードを指定した場合、しなかった場合の一連の例を見ていきましょう。

まずシードを100に設定し、乱数を1つ生成します。

In [8]: seed(100)
...: np.random.randn()
Out[8]: 0.2981253026948321

 

次に何も指定しないで乱数を生成すると、先ほどと異なる乱数が生成されます。

In [9]: np.random.randn()
Out[9]: 0.7103427339124173

 

最後に、先ほどと同じシード100を設定し、再度乱数を生成すると同じものが生成されることがわかります。

In [10]: seed(100)
...: np.random.randn()
Out[10]: 0.2981253026948321

 
 
 
著書の紹介です。

 

 
 
 
最後に...


Pythonの学習においては、実際に様々なプログラムを書いて試していくことが非常に重要です。Pythonについて、さらに詳しく学ばれたい方は、以下の私のUdemy講座をご検討いただければ幸いです。


Pythonを用いて世界中のWebサイトから自動的にデータ収集する方法を、基礎からていねいに学ぶことができます。Pythonを初めて学ばれた方も、最初に取り組みやすい内容になっています。


>> Pythonによるビジネスに役立つWebスクレイピング
発売数9,000本突破を記念して大セール中!期間限定になりますのでお早めに。
Pythonによるビジネスに役立つWebスクレイピング(BeautifulSoup、Selenium、Requests)講座の画面

既に9,000名以上の方に受講頂き、大変好評です。またコースに満足いただけない場合でも、30日返金保証があるので安心です。

期間限定の割引クーポンは、こちらから!
>> Pythonによるビジネスに役立つWebスクレイピング
   
   





-16. NumPyでベクトル・行列計算

Copyright© ビジPy , 2024 All Rights Reserved.