转自:http://blog.csdn.net/jinxiaonian11/article/details/53143141

在数据分析中,数据的获取是第一步,numpy.random 模块提供了非常全的自动产生数据API,是学习数据分析的第一步。

总体来说,numpy.random模块分为四个部分,对应四种功能: 
1. 简单随机数: 产生简单的随机数据,可以是任何维度 
2. 排列:将所给对象随机排列 
3. 分布:产生指定分布的数据,如高斯分布等 
4. 生成器:种随机数种子,根据同一种子产生的随机数是相同的 
以下是详细内容以及代码实例:(以下代码默认已导入numpy:import numpy as np )

1. 生成器

电脑产生随机数需要明白以下几点: 
(1)随机数是由随机种子根据一定的计算方法计算出来的数值。所以,只要计算方法一定,随机种子一定,那么产生的随机数就不会变。 
(2)只要用户不设置随机种子,那么在默认情况下随机种子来自系统时钟(即定时/计数器的值) 
(3)随机数产生的算法与系统有关,Windows和Linux是不同的,也就是说,即便是随机种子一样,不同系统产生的随机数也不一样。 
numpy.random 设置种子的方法有:

函数名称 函数功能 参数说明
RandomState 定义种子类 RandomState是一个种子类,提供了各种种子方法,最常用seed
seed([seed]) 定义全局种子 参数为整数或者矩阵

代码示例:

np.random.seed(1234) #设置随机种子为1234
  • 1

2. 简单随机数

函数名称 函数功能 参数说明
rand(d0, d1, …, dn) 产生均匀分布的随机数 dn为第n维数据的维度
randn(d0, d1, …, dn) 产生标准正态分布随机数 dn为第n维数据的维度
randint(low[, high, size, dtype]) 产生随机整数 low:最小值;high:最大值;size:数据个数
random_sample([size]) 在[0,1)内产生随机数 size:随机数的shape,可以为元祖或者列表,[2,3]表示2维随机数,维度为(2,3)
random([size]) 同random_sample([size]) 同random_sample([size])
ranf([size]) 同random_sample([size]) 同random_sample([size])
sample([size])) 同random_sample([size]) 同random_sample([size])
choice(a[, size, replace, p]) 从a中随机选择指定数据 a:1维数组 size:返回数据形状
bytes(length) 返回随机位 length:位的长度

代码示例

(1) np.random.rand(2,3) #产生2行三列均匀分布随机数组
Out[7]:
array([[ 0.35369993, 0.0086019 , 0.52609906],
[ 0.31978928, 0.27069309, 0.21930115]]) (2)In [8]: np.random.randn(3,3) #三行三列正态分布随机数据
Out[8]:
array([[ 2.29864491, 0.52591291, -0.80812825],
[ 0.37035029, -0.07191693, -0.76625886],
[-1.264493 , 1.12006474, -0.45698648]])
(3)In [9]: np.random.randint(1,100,[5,5]) #(1,100)以内的5行5列随机整数
Out[9]:
array([[87, 69, 3, 86, 85],
[13, 49, 59, 7, 31],
[19, 96, 70, 10, 71],
[91, 10, 52, 38, 49],
[ 8, 21, 55, 96, 34]])
(4)In [10]: np.random.random(10) #(0,1)以内10个随机浮点数
Out[10]:
array([ 0.33846136, 0.06517708, 0.41138166, 0.34638839, 0.41977818,
0.37188863, 0.2508949 , 0.89923638, 0.51341298, 0.71233872])
(5)In [11]: np.random.choice(10) #[0,10)内随机选择一个数
Out[11]: 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

3. 分布

numpy.random模块提供了产生各种分布随机数的API:

函数名称 函数功能 参数说明
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]) 多元正态分布。  
negative_binomial(n, p[, size]) 负二项分布  
noncentral_chisquare(df, nonc[, size]) 非中心卡方分布  
noncentral_f(dfnum, dfden, nonc[, size]) 非中心F分布  
normal([loc, scale, size]) 正态(高斯)分布  
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]) 齐普夫分布  

代码示例

(1)正态分布
import numpy as np
import matplotlib.pyplot as plt mu = 1 #期望为1
sigma = 3 #标准差为3
num = 10000 #个数为10000 rand_data = np.random.normal(mu, sigma, num)
count, bins, ignored = plt.hist(rand_data, 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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

得到图像: 

4. 排列

函数名称 函数功能 参数说明
shuffle(x) 打乱对象x(多维矩阵按照第一维打乱) 矩阵或者列表
permutation(x) 打乱并返回该对象(多维矩阵按照第一维打乱) 整数或者矩阵

代码示例

(1)正态分布
import numpy as np
rand_data = np.random.randint(1, 10, (3, 4))
print(rand_data)
np.random.shuffle(rand_data)
print(rand_data) out:
[[4 4 4 8]
[5 6 8 2]
[1 7 6 6]]
[[4 4 4 8]
[1 7 6 6]
[5 6 8 2]]
(按照行打乱了,也就是交换了行)

转 载python数据分析(1)-numpy产生随机数的更多相关文章

  1. Python数据分析(二): Numpy技巧 (1/4)

    In [1]: import numpy numpy.__version__ Out[1]: '1.13.1' In [2]: import numpy as np  

  2. Python数据分析(二): Numpy技巧 (2/4)

    numpy.pandas.matplotlib(+seaborn)是python数据分析/机器学习的基本工具. numpy的内容特别丰富,我这里只能介绍一下比较常见的方法和属性.   昨天晚上发了第一 ...

  3. Python数据分析(二): Numpy技巧 (3/4)

    numpy.pandas.matplotlib(+seaborn)是python数据分析/机器学习的基本工具. numpy的内容特别丰富,我这里只能介绍一下比较常见的方法和属性.   昨天晚上发了第一 ...

  4. Python数据分析(二): Numpy技巧 (4/4)

    numpy.pandas.matplotlib(+seaborn)是python数据分析/机器学习的基本工具. numpy的内容特别丰富,我这里只能介绍一下比较常见的方法和属性.   第一部分: ht ...

  5. Python数据分析之numpy学习

    Python模块中的numpy,这是一个处理数组的强大模块,而该模块也是其他数据分析模块(如pandas和scipy)的核心. 接下面将从这5个方面来介绍numpy模块的内容: 1)数组的创建 2)有 ...

  6. (转)Python数据分析之numpy学习

    原文:https://www.cnblogs.com/nxld/p/6058572.html https://morvanzhou.github.io/tutorials/data-manipulat ...

  7. Python数据分析之Numpy操作大全

    从头到尾都是手码的,文中的所有示例也都是在Pycharm中运行过的,自己整理笔记的最大好处在于可以按照自己的思路来构建矿建,等到将来在需要的时候能够以最快的速度看懂并应用=_= 注:为方便表述,本章设 ...

  8. python数据分析工具 | numpy

    Python中没有提供数组功能,虽然列表可以完成基本的数组功能,但并不是真正的数组,而且在数据量较大时,使用列表的速度回非常慢.因此,Numpy提供了真正的数组功能,以及对数据进行快速处理的函数.Nu ...

  9. Python数据分析之numpy数组全解析

    1 什么是numpy numpy是一个在Python中做科学计算的基础库,重在数值计算,也是大部分Python科学计算库的基础库,多用于大型.多维数据上执行数值计算. 在NumPy 中,最重要的对象是 ...

随机推荐

  1. Codeforces Round #374 (Div. 2) A. One-dimensional Japanese Crossword —— 基础题

    题目链接:http://codeforces.com/contest/721/problem/A A. One-dimensional Japanese Crossword time limit pe ...

  2. (转)定制findbugs规则

    转载自http://www.51testing.com/html/97/13997-211893.html 这类文章极少,字节码操作需要对becl库及jvm字节码操作有一定常识.参考: http:// ...

  3. 用margin还是用padding?(3)—— 负margin实战

    看过一篇文章是关于我知道你不知道的负Margin,里面对margin做了总结: 当margin四个值都为正数值的话,那么margin按照正常逻辑同周围元素产生边距.当元素margin的top和left ...

  4. Tensorflow深度学习之十二:基础图像处理之二

    Tensorflow深度学习之十二:基础图像处理之二 from:https://blog.csdn.net/davincil/article/details/76598474   首先放出原始图像: ...

  5. 2016.4.23浙江省赛(zoj3936 zoj3938 zoj3940 zoj3944 zoj3946 zoj3947 )

    A      Apples and Ideas Time Limit: 2 Seconds      Memory Limit: 65536 KB "If you have an apple ...

  6. live555 基本类之间的关系

    live555 中存在这5个最基本的类.每个类中都拥有一个BasicUsageEnvironment. 这是这几个类之间的相互关系.   MediaSession可以拥有多个subsession.

  7. bzoj4004

    线性基 构成线性基的个数是定的,所以我们对价值进行贪心就行了,根据拟阵那套理论,我们排个序,然后能塞进去就塞,这样就求出最小值了. 思维江化,只要是多维向量都能用线性基搞. #include<b ...

  8. js的常用正则表达式

    1.在input框中只能输入金额,其实就是只能输入最多有两位小数的数字 //第一种在input输入框限制 <input type="text" maxlength=" ...

  9. Eclipse -- 自动补齐设置和其他用法

    1:自动补齐设置:最简单的修改方式是:Windows——>Preferences——>Java-->Editor-->Content Asist,在Auto activatio ...

  10. Flutter实战视频-移动电商-21.分类页_类别信息接口调试

    21.分类页_类别信息接口调试 先解决一个坑 取消上面的GridVIew的回弹效果.就是在拖这个gridview的时候有一个滚动的效果 physics: NeverScrollableScrollPh ...