转 载python数据分析(1)-numpy产生随机数
转自: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产生随机数的更多相关文章
- Python数据分析(二): Numpy技巧 (1/4)
In [1]: import numpy numpy.__version__ Out[1]: '1.13.1' In [2]: import numpy as np
- Python数据分析(二): Numpy技巧 (2/4)
numpy.pandas.matplotlib(+seaborn)是python数据分析/机器学习的基本工具. numpy的内容特别丰富,我这里只能介绍一下比较常见的方法和属性. 昨天晚上发了第一 ...
- Python数据分析(二): Numpy技巧 (3/4)
numpy.pandas.matplotlib(+seaborn)是python数据分析/机器学习的基本工具. numpy的内容特别丰富,我这里只能介绍一下比较常见的方法和属性. 昨天晚上发了第一 ...
- Python数据分析(二): Numpy技巧 (4/4)
numpy.pandas.matplotlib(+seaborn)是python数据分析/机器学习的基本工具. numpy的内容特别丰富,我这里只能介绍一下比较常见的方法和属性. 第一部分: ht ...
- Python数据分析之numpy学习
Python模块中的numpy,这是一个处理数组的强大模块,而该模块也是其他数据分析模块(如pandas和scipy)的核心. 接下面将从这5个方面来介绍numpy模块的内容: 1)数组的创建 2)有 ...
- (转)Python数据分析之numpy学习
原文:https://www.cnblogs.com/nxld/p/6058572.html https://morvanzhou.github.io/tutorials/data-manipulat ...
- Python数据分析之Numpy操作大全
从头到尾都是手码的,文中的所有示例也都是在Pycharm中运行过的,自己整理笔记的最大好处在于可以按照自己的思路来构建矿建,等到将来在需要的时候能够以最快的速度看懂并应用=_= 注:为方便表述,本章设 ...
- python数据分析工具 | numpy
Python中没有提供数组功能,虽然列表可以完成基本的数组功能,但并不是真正的数组,而且在数据量较大时,使用列表的速度回非常慢.因此,Numpy提供了真正的数组功能,以及对数据进行快速处理的函数.Nu ...
- Python数据分析之numpy数组全解析
1 什么是numpy numpy是一个在Python中做科学计算的基础库,重在数值计算,也是大部分Python科学计算库的基础库,多用于大型.多维数据上执行数值计算. 在NumPy 中,最重要的对象是 ...
随机推荐
- HTML5与php实现消息推送功能
1.html页面basic_sse.html <!DOCTYPE html> <html lang="en"> <head> <meta ...
- vue-面试
1.单页面应用与多页面应用的去别 2.简述一下Sass.Less,且说明区别? 他们是动态的样式语言,是CSS预处理器,CSS上的一种抽象层.他们是一种特殊的语法/语言而编译成CSS.变量符不一样,l ...
- js里=、== 和===有什么区别?
说明:该文章是转载后进行修改完善的,望大家有收获. =是赋值运算符,==是关系运算符; ===是全等运算符. ”==”与”===”是不同的,一个是判断值是否相等,一个是判断值及类型是否完全相等.第一个 ...
- 网站流量统计之PV和UV
转自:http://blog.csdn.NET/webdesman/article/details/4062069 如果您是一个站长,或是一个SEO,您一定对于网站统计系统不会陌生,对于SEO新手来说 ...
- jquery之extend
jquery的extend方法的用法1. [代码][JavaScript]代码 01<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01// ...
- css控制字符长度超出变成点点点显示(单行,多行)
css控制字符长度超出变成点点点显示 单行: width 必不可少 div{ width: 55%; text-overflow: ellipsis; overflow: hidden; white- ...
- Mac的环境变量
在终端输入: vim ~/.bash_profile 按i切换到INSERT模式.然后把路径按照下面的格式写进去.然后输入:wq保存退出. export PATH=${PATH}:/Users/Dru ...
- python-pycharm 设置默认代码及注释
pycharm
- JNI——JAVA调用C
1. 编译java:javac JNIDemo.java 2. 编译JNI:gcc -I/usr/lib/jvm/java-1.8.0-openjdk-amd64/include/ -I/usr/li ...
- 解决 'chromedriver' executable needs to be in PATH.'报错
试了把chromedriver.exe放到chrome安装文件下,python安装文件下,然后把路径配到path里,均无用. 最后是修改函数调用得以解决: from selenium import w ...