1. 程式人生 > >隨機抽樣 (numpy.random)

隨機抽樣 (numpy.random)

via hyper pseudo ocs wal gauss array diagonal title

隨機抽樣 (numpy.random)

簡單的隨機數據

rand(d0, d1, ..., dn)

隨機值

>>> np.random.rand(3,2)
array([[ 0.14022471,  0.96360618],  #random
       [ 0.37601032,  0.25528411],  #random
       [ 0.49313049,  0.94909878]]) #random

randn(d0, d1, ..., dn)

返回一個樣本,具有標準正態分布。

Notes

For random samples from 技術分享圖片, use:

sigma * np.random.randn(...) + mu

Examples

>>> np.random.randn()
2.1923875335537315 #random

Two-by-four array of samples from N(3, 6.25):

>>> 2.5 * np.random.randn(2, 4) + 3
array([[-4.49401501,  4.00950034, -1.81814867,  7.29718677],  #random
       [ 0.39924804,  4.68456316,  4.99394529,  4.84057254]]) #random

randint

(low[, high, size])

返回隨機的整數,位於半開區間 [low, high)。

>>> np.random.randint(2, size=10)
array([1, 0, 0, 0, 1, 1, 0, 0, 1, 0])
>>> np.random.randint(1, size=10)
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])

Generate a 2 x 4 array of ints between 0 and 4, inclusive:

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

random_integers(low[, high, size])

返回隨機的整數,位於閉區間 [low, high]。

Notes

To sample from N evenly spaced floating-point numbers between a and b, use:

a + (b - a) * (np.random.random_integers(N) - 1) / (N - 1.)

Examples

技術分享圖片
>>> np.random.random_integers(5)
4
>>> type(np.random.random_integers(5))
<type ‘int‘>
>>> np.random.random_integers(5, size=(3.,2.))
array([[5, 4],
       [3, 3],
       [4, 5]])
技術分享圖片

Choose five random numbers from the set of five evenly-spaced numbers between 0 and 2.5, inclusive (i.e., from the set 技術分享圖片):

>>> 2.5 * (np.random.random_integers(5, size=(5,)) - 1) / 4.
array([ 0.625,  1.25 ,  0.625,  0.625,  2.5  ])

Roll two six sided dice 1000 times and sum the results:

>>> d1 = np.random.random_integers(1, 6, 1000)
>>> d2 = np.random.random_integers(1, 6, 1000)
>>> dsums = d1 + d2

Display results as a histogram:

>>> import matplotlib.pyplot as plt
>>> count, bins, ignored = plt.hist(dsums, 11, normed=True)
>>> plt.show()

random_sample([size])

返回隨機的浮點數,在半開區間 [0.0, 1.0)。

To sample 技術分享圖片 multiply the output of random_sample by (b-a) and add a:

(b - a) * random_sample() + a

Examples

技術分享圖片
>>> np.random.random_sample()
0.47108547995356098
>>> type(np.random.random_sample())
<type ‘float‘>
>>> np.random.random_sample((5,))
array([ 0.30220482,  0.86820401,  0.1654503 ,  0.11659149,  0.54323428])
技術分享圖片

Three-by-two array of random numbers from [-5, 0):

>>> 5 * np.random.random_sample((3, 2)) - 5
array([[-3.99149989, -0.52338984],
       [-2.99091858, -0.79479508],
       [-1.23204345, -1.75224494]])

random([size])

返回隨機的浮點數,在半開區間 [0.0, 1.0)。

(官網例子與random_sample完全一樣)

ranf([size])

返回隨機的浮點數,在半開區間 [0.0, 1.0)。

(官網例子與random_sample完全一樣)

sample([size])

返回隨機的浮點數,在半開區間 [0.0, 1.0)。

(官網例子與random_sample完全一樣)

choice(a[, size, replace, p])

生成一個隨機樣本,從一個給定的一維數組

Examples

Generate a uniform random sample from np.arange(5) of size 3:

>>> np.random.choice(5, 3)
array([0, 3, 4])
>>> #This is equivalent to np.random.randint(0,5,3)

Generate a non-uniform random sample from np.arange(5) of size 3:

>>> np.random.choice(5, 3, p=[0.1, 0, 0.3, 0.6, 0])
array([3, 3, 0])

Generate a uniform random sample from np.arange(5) of size 3 without replacement:

>>> np.random.choice(5, 3, replace=False)
array([3,1,0])
>>> #This is equivalent to np.random.permutation(np.arange(5))[:3]

Generate a non-uniform random sample from np.arange(5) of size 3 without replacement:

>>> np.random.choice(5, 3, replace=False, p=[0.1, 0, 0.3, 0.6, 0])
array([2, 3, 0])

Any of the above can be repeated with an arbitrary array-like instead of just integers. For instance:

>>> aa_milne_arr = [‘pooh‘, ‘rabbit‘, ‘piglet‘, ‘Christopher‘]
>>> np.random.choice(aa_milne_arr, 5, p=[0.5, 0.1, 0.1, 0.3])
array([‘pooh‘, ‘pooh‘, ‘pooh‘, ‘Christopher‘, ‘piglet‘],
      dtype=‘|S11‘)

bytes(length)

返回隨機字節。

>>> np.random.bytes(10)
‘ eh\x85\x022SZ\xbf\xa4‘ #random

排列

shuffle(x)

現場修改序列,改變自身內容。(類似洗牌,打亂順序)

>>> arr = np.arange(10)
>>> np.random.shuffle(arr)
>>> arr
[1 7 5 2 9 4 3 6 0 8]

This function only shuffles the array along the first index of a multi-dimensional array:

>>> arr = np.arange(9).reshape((3, 3))
>>> np.random.shuffle(arr)
>>> arr
array([[3, 4, 5],
       [6, 7, 8],
       [0, 1, 2]])

permutation(x)

返回一個隨機排列

>>> np.random.permutation(10)
array([1, 7, 4, 3, 0, 9, 2, 5, 8, 6])
>>> np.random.permutation([1, 4, 9, 12, 15])
array([15,  1,  9,  4, 12])
>>> arr = np.arange(9).reshape((3, 3))
>>> np.random.permutation(arr)
array([[6, 7, 8],
       [0, 1, 2],
       [3, 4, 5]])

分布

beta(a, b[, size])

貝塔分布樣本,在 [0, 1]內。

binomial(n, p[, size])

二項分布的樣本。

chisquare(df[, size])

卡方分布樣本。

dirichlet(alpha[, size])

狄利克雷分布樣本。

exponential([scale, size])

指數分布

f(dfnum, dfden[, size])

F分布樣本。

gamma(shape[, scale, size])

伽馬分布

geometric(p[, size])

幾何分布

gumbel([loc, scale, size])

耿貝爾分布。

hypergeometric(ngood, nbad, nsample[, size])

超幾何分布樣本。

laplace([loc, scale, size])

拉普拉斯或雙指數分布樣本

logistic([loc, scale, size])

Logistic分布樣本

lognormal([mean, sigma, size])

對數正態分布

logseries(p[, size])

對數級數分布。

multinomial(n, pvals[, size])

多項分布

multivariate_normal(mean, cov[, size])

多元正態分布。

>>> mean = [0,0]
>>> cov = [[1,0],[0,100]] # diagonal covariance, points lie on x or y-axis
>>> import matplotlib.pyplot as plt
>>> x, y = np.random.multivariate_normal(mean, cov, 5000).T
>>> plt.plot(x, y, ‘x‘); plt.axis(‘equal‘); plt.show()

negative_binomial(n, p[, size])

負二項分布

noncentral_chisquare(df, nonc[, size])

非中心卡方分布

noncentral_f(dfnum, dfden, nonc[, size])

非中心F分布

normal([loc, scale, size])

正態(高斯)分布

Notes

The probability density for the Gaussian distribution is

技術分享圖片

where 技術分享圖片 is the mean and 技術分享圖片 the standard deviation. The square of the standard deviation, 技術分享圖片, is called the variance.

The function has its peak at the mean, and its “spread” increases with the standard deviation (the function reaches 0.607 times its maximum at 技術分享圖片 and 技術分享圖片 [R217]).

Examples

Draw samples from the distribution:

>>> mu, sigma = 0, 0.1 # mean and standard deviation
>>> s = np.random.normal(mu, sigma, 1000)

Verify the mean and the variance:

>>> abs(mu - np.mean(s)) < 0.01
True
>>> abs(sigma - np.std(s, ddof=1)) < 0.01
True

Display the histogram of the samples, along with the probability density function:

>>> import matplotlib.pyplot as plt
>>> count, bins, ignored = plt.hist(s, 30, normed=True)
>>> plt.plot(bins, 1/(sigma * np.sqrt(2 * np.pi)) *
...                np.exp( - (bins - mu)**2 / (2 * sigma**2) ),
...          linewidth=2, color=‘r‘)
>>> plt.show()

pareto(a[, size])

帕累托(Lomax)分布

poisson([lam, size])

泊松分布

power(a[, size])

Draws samples in [0, 1] from a power distribution with positive exponent a - 1.

rayleigh([scale, size])

Rayleigh 分布

standard_cauchy([size])

標準柯西分布

standard_exponential([size])

標準的指數分布

standard_gamma(shape[, size])

標準伽馬分布

standard_normal([size])

標準正態分布 (mean=0, stdev=1).

standard_t(df[, size])

Standard Student’s t distribution with df degrees of freedom.

triangular(left, mode, right[, size])

三角形分布

uniform([low, high, size])

均勻分布

vonmises(mu, kappa[, size])

von Mises分布

wald(mean, scale[, size])

瓦爾德(逆高斯)分布

weibull(a[, size])

Weibull 分布

zipf(a[, size])

齊普夫分布

隨機數生成器

RandomState

Container for the Mersenne Twister pseudo-random number generator.

seed([seed])

Seed the generator.

get_state()

Return a tuple representing the internal state of the generator.

set_state(state)

Set the internal state of the generator from a tuple.

隨機抽樣 (numpy.random)