Pythonのnumpyライブラリrand(),randn(),randint(),random_integers()などのrandom系関数の使い方


Pythonでデータ処理を行う場合、多くのランダムデータが必要になることが多いのですが、どのようにしてこんなに多くのデータを構築するのでしょうか.Pythonのサードパーティライブラリnumpyライブラリにはrandom関数が提供されています.
まずnumpyをインポートします.次のすべてのコードはデフォルトでnumpyをインポートします.つまり、次のコードです.
import numpy as np

まずはnumpy.random.seed()とnumpy.random.RandomState()というデータ処理でよく使われる2つの関数は,両者が実現する役割は同じであり,いずれもランダムに数を生成するたびに同じである.
np.random.seed(1)
np.random.rand(8)

result:
array([4.17022005e-01, 7.20324493e-01, 1.14374817e-04, 3.02332573e-01,
       1.46755891e-01, 9.23385948e-02, 1.86260211e-01, 3.45560727e-01])
np.random.seed(1)
np.random.rand(8)

result:
array([4.17022005e-01, 7.20324493e-01, 1.14374817e-04, 3.02332573e-01,
       1.46755891e-01, 9.23385948e-02, 1.86260211e-01, 3.45560727e-01])

もう一度見てrandom.RandomState():
rng=np.random.RandomState(1)
rng.rand(8)

result:
array([4.17022005e-01, 7.20324493e-01, 1.14374817e-04, 3.02332573e-01,
       1.46755891e-01, 9.23385948e-02, 1.86260211e-01, 3.45560727e-01])
rng=np.random.RandomState(1)
rng.rand(8)

result:
array([4.17022005e-01, 7.20324493e-01, 1.14374817e-04, 3.02332573e-01,
       1.46755891e-01, 9.23385948e-02, 1.86260211e-01, 3.45560727e-01])

上記の4つの乱数の結果は同じであることがわかります
1、numpy.random.rand()公式ドキュメントで与えられた使い方はnp.random.rand(d 0,d 1,d 2.....dn)は、所与の形状で配列を作成し、配列に[0,1]間に均一に分布する乱数サンプルの使用法と実装を加える
np.random.rand(2,3)

result:
array([[0.87638915, 0.89460666, 0.08504421],
       [0.03905478, 0.16983042, 0.8781425 ]])

2、numpy.random.randn()公式ドキュメントではnumpy.random.randn(d 0,d 1,...dn)は、所定の形状で配列を作成する、配列要素が標準正規分布N(0,1)に適合する一般的な正規分布N(mu,sigma*sigma)を得るにはsigma*npを用いることができる.random.randn(....)+mu表示用法及び実現
np.random.randn(2,3)

result:
array([[-0.17242821, -0.87785842,  0.04221375],
       [ 0.58281521, -1.10061918,  1.14472371]])

3、numpy.random.randint()公式ドキュメントで与えられた使い方はnp.random.randint(low,high=None,size=None,dtype)は、半開閉区間[low,high]に離散的に均一に分布する整数値を生成し、high=Noneであれば、値区間を[0,low)の用法および実現
# high = None
np.random.randint(5,size=(2,3))

result:
array([[4, 2, 4],
       [0, 3, 1]])
# high != None
np.random.randint(2,high=5,size=(2,3))

result:
array([[4, 2, 2],
       [3, 4, 4]])
np.random.randint(0,15)  #       size,     

result:
6

4、numpy.random.random_integers()#公式ドキュメントではnumpy.random.random_integers(low,high=None,size=None)#は、閉区間[low,high]上の離散均一分布の整数値を生成する.high=Noneの場合、取値区間は[1,low]#の用法および実現となる
# high = None
np.random.random_integers(5,size=(2,3))

result:
/home/zp/ProgramData/Anaconda3/lib/python3.6/site-packages/ipykernel_launcher.py:2: DeprecationWarning: This function is deprecated. Please call randint(1, 5 + 1) instead
  

array([[2, 4, 5],
       [4, 2, 4]])

上記の結果には廃棄警告があり、大体Python 3という意味です.6 randomは使用されなくなります.random_integers()は、randint()の代わりに使用できます.
np.random.randint(1,5+1,size=(2,3))

result:
array([[1, 3, 3],
       [2, 4, 5]])
# high != None
np.random.random_integers(2,high=5,size=(2,3))

result:
/home/zp/ProgramData/Anaconda3/lib/python3.6/site-packages/ipykernel_launcher.py:1: DeprecationWarning: This function is deprecated. Please call randint(2, 5 + 1) instead
  """Entry point for launching an IPython kernel.

array([[4, 4, 4],
       [2, 2, 5]])
np.random.randint(2,6,size=(2,3))

result:
array([[5, 3, 3],
       [3, 5, 2]])

5、numpy.random.random_sample()公式ドキュメントではnumpy.random.random_sample(size=None)が所定の形状で[0,1]を返す間のランダム浮動小数点数の使い方と実現
np.random.random_sample(size=(2,3))

result:
array([[0.53589641, 0.66379465, 0.51488911],
       [0.94459476, 0.58655504, 0.90340192]])
np.random.random_sample()

result:
0.13747470414623753

その他の関数numpy.random.random() ;numpy.random.ranf() numpy.random.sample()の使い方と実装は同じです
6、numpy.random.choice()公式ドキュメントで与えられた使い方:np.random.choice(a,size=None,replace=True,p=None)aが配列である場合、aから要素を選択する.aが単一intタイプ数の場合、選択range(a)の数replaceがboolタイプ、Trueの場合、選択した要素は重複し、逆に重複pが配列ではなく、各数に選択された可能性、すなわち確率が格納される
np.random.choice(5,size=4,replace=True,p=[0.1,0.1,0.3,0.4,0.1])

result:
array([2, 4, 3, 3])
np.random.choice(5,size=4,replace=False,p=[0.1,0.1,0.3,0.4,0.1])

result:
array([1, 4, 2, 3])