NumPy基础操作(3)——代数运算和随机数
NumPy基础操作(3)——代数运算和随机数
(注:记得在文件开头导入import numpy as np)
目录:
- NumPy在矩阵运算中的应用
- 常用矩阵运算函数介绍
- 编程实现
- 利用NumPy生成随机数以及随机漫步
- 常用随机数生成函数介绍
- 编程实现
- 随机漫步编程实现
NumPy在矩阵运算中的应用
常用矩阵运算函数介绍
| diag | 将一维数组转换为方阵,一维数组元素为方阵对角线元素 |
| dot | 矩阵点乘运算 |
| trace | 计算对角线元素的和 |
| det | 计算矩阵的行列式 |
| eig | 计算方阵的特征值和对应的特征向量 |
| inv | 计算方阵的逆 |
| solve | 求解线性方程组Ax=b,其中A为方阵 |
| lstsq | 计算Ax=b的最小二乘解 |
编程实现
x = np.ones(3)
xmat = np.diag(x)
print(xmat) #输出结果
'''
[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]
'''x = np.ones(3)
xmat = np.diag(x)
N = np.trace(xmat)
print(N) #输出结果
'''
3.0
'''x = np.ones(3)
xmat = np.diag(x)
[s, p] = np.linalg.eig(xmat) #返回xmat矩阵的特征值和特征向量
#注意这里不能直接用np.eig(),应该加上np.linalg.eig()
print(s)
print("************")
print(p) #输出结果
'''
[1. 1. 1.]
************
[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]
'''xarr = np.array([[1, 2], [3, 4]])
yarr = np.array([[5, 6], [7, 8]])
print(xarr)
print(yarr)
print("************")
x_mul_y = np.dot(xarr, yarr) #.dot()是矩阵的乘法
x_dot_y = xarr*yarr #*号乘法是矩阵元素对应相乘
print(x_dot_y)
print(x_mul_y) #输出结果
'''
[[1 2]
[3 4]]
[[5 6]
[7 8]]
************
[[ 5 12]
[21 32]]
[[19 22]
[43 50]]
'''
xarr = np.array([[1, 2], [3, 4]])
yarr = np.array([[5, 6], [7, 8]]) print(xarr)
print(yarr)
print("************")
x = np.linalg.solve(xarr, yarr) #求解xarr.dot(x) = yarr
print(x)
#输出结果
'''
[[1 2]
[3 4]]
[[5 6]
[7 8]]
************
[[-3. -4.]
[ 4. 5.]]
'''
x = np.array([0, 1, 2, 3])
y = np.array([-1, 0.2, 0.9, 2.1])
A = np.vstack([x, np.ones(len(x))]).T
A=
[[0. 1.]
[1. 1.]
[2. 1.]
[3. 1.]]
m, c = np.linalg.lstsq(A, y)[0] #拟合y = mA+c 一次曲线 print(m, c)
import matplotlib.pyplot as plt
plt.plot(x, y, 'o', label='Original data', markersize=10)
plt.plot(x, m*x + c, 'r', label='Fitted line')
plt.legend()
plt.show()
#输出结果
'''
0.9999999999999999 -0.9499999999999997
''' 输出拟合曲线为:
利用NumPy生成随机数以及随机漫步
常用随机数生成函数介绍
部分numpy.random函数 seed 确定随机数生成器的种子 permutation 返回一个序列的随机排列或返回一个随机排列的范围 shuffle 对一个序列随机排列 rand 产生均匀分布的样本值 randint 从给定的上下限范围内随机选取整数 randn 产生正态分布(平均值为0,标准差为1)的样本值 binomial 产生二项分布的样本值 normal 产生正太(高斯)分布的样本值 uniform 产生在[0,1)中均匀分布的样本值
编程实现
x = np.arange(10)
print(x)
print("************")
np.random.shuffle(x) #这里直接打乱原始序列,不会返回任何值,再次输出原序列即可看到改变
print(x) np.random.seed(666) #设置一个随机数种子,相同的随机数种子产生的随机数相同
y_1 = np.random.randint(0, 10, size=10)
y_2 = np.random.randint(0, 10, size=10)
np.random.seed(666) #设置一个随机数种子,相同的随机数种子产生的随机数相同
y_1_seed = np.random.randint(0, 10, size=10)
print("************")
print(y_1, y_2, y_1_seed)
#输出结果
'''
[0 1 2 3 4 5 6 7 8 9]
************
[8 3 9 7 6 5 2 4 0 1]
************
[2 6 9 4 3 1 0 8 7 5] [2 5 5 4 8 4 4 0 0 4] [2 6 9 4 3 1 0 8 7 5]
'''#permutation()给出序列随机排序的结果
x = np.random.permutation([1, 2, 3]) #不是就地打乱,可以进行赋值
print(np.random.permutation([1]))
print(np.random.permutation([1, 2]))
print(x)
#输出结果
'''
[1]
[2 1]
[3 2 1]
'''实例:随机漫步
import matplotlib.pyplot as plt nsteps = 1000
draws = np.random.randint(0, 2, size=nsteps)
steps = np.where(draws > 0, 1, -1)
walk = steps.cumsum()
print(walk.min(), walk.max())
print((np.abs(walk) >= 10).argmax()) #argmax()返回数组中第一个最大值的索引号
#(np.abs(walk) >= 10)已经变成了布尔型数组 #绘制前100次的随机漫步结果
plt.plot([x for x in range(100)], walk[:100])
plt.title("Random walk with +1/-1 steps")
plt.show()
#输出结果
'''
-10 31
51
'''
NumPy基础操作(3)——代数运算和随机数的更多相关文章
- numpy 基础操作
Numpy 基础操作¶ 以numpy的基本数据例子来学习numpy基本数据处理方法 主要内容有: 创建数组 数组维度转换 数据选区和切片 数组数据计算 随机数 数据合并 数据统计计算 In [1]: ...
- NumPy基础操作
NumPy基础操作(1) (注:记得在文件开头导入import numpy as np) 目录: 数组的创建 强制类型转换与切片 布尔型索引 结语 数组的创建 相关函数 np.array(), np. ...
- NumPy基础操作(2)
NumPy基础操作(2) (注:记得在文件开头导入import numpy as np) 目录: 写在前面 转置和轴对换 NumPy常用函数 写在前面 本篇博文主要讲解了普通转置array.T.轴对换 ...
- [笔记]NumPy基础操作
学机器学习做点小笔记,都是Python的NumPy库的基本小操作,图书馆借的书看到的,怕自己还了书后忘了,就记下来. 一般习惯导入numpy时使用 import numpy as np ,不要直接im ...
- 学习Numpy基础操作
# coding:utf-8 import numpy as np from numpy.linalg import * def day1(): ''' ndarray :return: ''' ls ...
- [笔记]SciPy、Matplotlib基础操作
NumPy.SciPy.Matplotlib,Python下机器学习三大利器.上一篇讲了NumPy基础操作,这节讲讲SciPy和Matplotlib.目前接触到的东西不多,以后再遇到些比较常用的再更新 ...
- 《利用Python进行数据分析·第2版》第四章 Numpy基础:数组和矢量计算
<利用Python进行数据分析·第2版>第四章 Numpy基础:数组和矢量计算 numpy高效处理大数组的数据原因: numpy是在一个连续的内存块中存储数据,独立于其他python内置对 ...
- 小白学 Python 数据分析(5):Pandas (四)基础操作(1)查看数据
在家为国家做贡献太无聊,不如跟我一起学点 Python 人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Panda ...
- 科学计算库Numpy基础&提升(理解+重要函数讲解)
Intro 对于同样的数值计算任务,使用numpy比直接编写python代码实现 优点: 代码更简洁: numpy直接以数组.矩阵为粒度计算并且支持大量的数学函数,而python需要用for循环从底层 ...
随机推荐
- pandas 学习(二)—— pandas 下的常用函数
import pandas as pd; 1. 数据处理函数 pd.isnull()/pd.notnull():用于检测缺失数据: 2. 辅助函数 pd.to_datetime() 3. Series ...
- 关于WPF你应该知道的2000件事
原文 关于WPF你应该知道的2000件事 以下列出了迄今为止为WPF博客所知的2,000件事所创建的所有帖子. 帖子总数= 1,201 动画 #7 - 基于属性的动画 #686 - 使用动画制作图像脉 ...
- MVC基架生成的Detele视图
@model MyMusicStore.Models.Album @{ ViewBag.Title = "Delete"; } <h2>Delete</h ...
- 操作XML文档遇到的XMLNS问题及解决方法 (C# 和 PHP)
原文:操作XML文档遇到的XMLNS问题及解决方法 (C# 和 PHP) 不管是用 PHP 还是 C#, 在操作 XML 的时候我们除了一个节点一个节点去取值之外, 还有一个非常方便的表达式, 就是 ...
- ArcGIS for Desktop入门教程_第三章_Desktop软件安装 - ArcGIS知乎-新一代ArcGIS问答社区
原文:ArcGIS for Desktop入门教程_第三章_Desktop软件安装 - ArcGIS知乎-新一代ArcGIS问答社区 1 软件安装 1.1 安装前准备 请确认已经收到来自Esri中国( ...
- Ubuntu16.04下配置laravel
参考 http://tecadmin.net/install-laravel-framework-on-ubuntu/# 本人亲试,完全正确 注意: Step 4 – Set Encryption K ...
- mysql启动脚本
一台服务器上安装多个MySQL实例之后,实例的启动关闭不能再用service mysqld start/stop/restart命令,所以编写如下脚本用于启动关闭对应端口的实例. 这个脚本适用于多实例 ...
- Faster RCNN 爬坑记录
训练 在博客http://blog.csdn.net/Suii_v5/article/details/73776299中介绍了基本的错误类型.我只是做一些自己问题的补充 在error6中,调整nump ...
- Qt:解析命令行(使用QCommandLineOption和QCommandLineParser)
Qt从5.2版开始提供了两个类QCommandLineOption和QCommandLineParser来解析应用的命令行参数. 一.命令行写法命令行:"-abc" 在QComma ...
- 层次关系表格,不用递归,快速检索。HierarchyId
最近这几天写了个T4自动实现EF code first和Ado的存储过程.使用过程中发现了一个Sql的类型为HierarchyId.看到时真是百思不得齐姐.算了查一下MSDN吧.从微软官网找到了Hie ...
