[b0044] numpy_快速上手
1 概念理清

2 创建数组
2.1
f1= np.array(
[
[1,2,3,4],
[2,3,4,5],
[3,4,5,6]
]
)
其他代码
a= np.array([
[
[3.4,5,6,8],
[3,2.4,5,7]
],
[ [2.3,4,5,6],
[0.9,5,6,1]
],
[
[9,6.7,3,2],
[1,3,4,5]
]
]) b = np.array((
(
(1,2,3,4),(4,5,6,7),(9,3,4,5)
),
(
(0,2,3,4),(4,5,6,7),(4,5,2,3)
)
))
2.2
- zeros
- empty
- ones
- eye
# 零矩阵
In [49]: f2 = zeros( (3,4) ) In [50]: f2
Out[50]:
array([[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.]]) # 单位矩阵
In [51]: eye(3)
Out[51]:
array([[ 1., 0., 0.],
[ 0., 1., 0.],
[ 0., 0., 1.]])
2.3
2.3.1 arange
f3 = arange(15).reshape(3,5)
注:
numpy.arange 指向同一个内存空间
>>> arange(15)
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14])
>>> arange( 10, 30, 5 )
array([10, 15, 20, 25])
2.3.2 linspace
# linspace 等差序列, (开始,结束,元素个数)
In [154]: linspace(2,12,3)
Out[154]: array([ 2., 7., 12.]
2.3.3 logspace
# logspace 等比数列, (开始,结束,元素个数)
* 第一个数 10^2
* 第二个数 10^12
In [155]: logspace(2,12,3)
Out[155]: array([ 1.00000000e+02, 1.00000000e+07, 1.00000000e+12])
2.3.4 random
#random 函数
In [177]: np.random.random()
In [178]: np.random.random((2,3,4))
Out[178]:
array([[[ 0.05126289, 0.66402449, 0.22970131, 0.73774777],
[ 0.72501932, 0.20642975, 0.38318838, 0.70826703],
[ 0.86349343, 0.34179916, 0.32829582, 0.55624637]],
[[ 0.59645461, 0.83145358, 0.85956141, 0.81924494],
[ 0.01116166, 0.71089623, 0.91432385, 0.66226528],
[ 0.5791923 , 0.42764113, 0.56575513, 0.54864404]]])
In [182]: np.random.random_sample((2,3))
Out[182]:
array([[ 0.3591195 , 0.89974204, 0.20622608],
[ 0.64718978, 0.24135722, 0.44665569]])
其它函数array, zeros, zeros_like, ones, ones_like, empty, empty_like, arange, linspace, rand, randn, fromfunction, fromfile参考:NumPy示例
3 索引,切片和迭代

4 基本运算
In [106]: a = array( [20,30,40,50] ) In [107]: b = arange( 4 ) In [108]: b
Out[108]: array([0, 1, 2, 3]) In [109]: c = a-b In [110]: c
Out[110]: array([20, 29, 38, 47]) In [111]: b**2
Out[111]: array([0, 1, 4, 9]) In [112]: 10*sin(a)
Out[112]: array([ 9.12945251, -9.88031624, 7.4511316 , -2.62374854]) In [113]: a<35
Out[113]: array([ True, True, False, False], dtype=bool) In [114]: b+3
Out[114]: array([3, 4, 5, 6]
In [117]: b*3
Out[117]: array([0, 3, 6, 9])
# 矩阵积 dot
第一个矩阵的列 = 第二个矩阵的行
(3*4) * (4*5) = (3*5)
In [115]: f1= np.array(
...: [
...: [1,2,3,4],
...: [2,3,4,5],
...: [3,4,5,6]
...: ]
...: )
...:
...:
...: f2= np.array(
...: [
...: [1,2,3,4,1],
...: [2,3,4,5,2],
...: [3,4,5,6,3],
...: [3,4,5,6,4]
...: ]
...: )
...: In [116]: f1.dot(f2)
Out[116]:
array([[26, 36, 46, 56, 30],
[35, 49, 63, 77, 40],
[44, 62, 80, 98, 50]])
行列式、秩、逆矩阵、转置
In [33]: a
Out[33]:
array([[ 3., 2., 3.],
[ 4., 7., 6.],
[ 7., 8., 11.]]) # 方阵
In [34]: a.shape
Out[34]: (3L, 3L) # 求秩
In [35]: np.linalg.matrix_rank(a)
Out[35]: 3 # 求行列式 In [39]: np.linalg.det(a)
Out[39]: 32.0 # 求逆矩阵
In [40]: b = np.linalg.inv(a) In [41]: b
Out[41]:
array([[ 0.90625, 0.0625 , -0.28125],
[-0.0625 , 0.375 , -0.1875 ],
[-0.53125, -0.3125 , 0.40625]]) # 验证
In [42]: a.dot(b)
Out[42]:
array([[ 1., 0., 0.],
[ 0., 1., 0.],
[ 0., 0., 1.]]) # 转置
In [43]: a.T
Out[43]:
array([[ 3., 4., 7.],
[ 2., 7., 8.],
[ 3., 6., 11.]]) In [44]: a.transpose()
Out[44]:
array([[ 3., 4., 7.],
[ 2., 7., 8.],
[ 3., 6., 11.]])
[b0044] numpy_快速上手的更多相关文章
- 【Python五篇慢慢弹】快速上手学python
快速上手学python 作者:白宁超 2016年10月4日19:59:39 摘要:python语言俨然不算新技术,七八年前甚至更早已有很多人研习,只是没有现在流行罢了.之所以当下如此盛行,我想肯定是多 ...
- 快速上手Unity原生Json库
现在新版的Unity(印象中是从5.3开始)已经提供了原生的Json库,以前一直使用LitJson,研究了一下Unity用的JsonUtility工具类的使用,发现使用还挺方便的,所以打算把项目中的J ...
- [译]:Xamarin.Android开发入门——Hello,Android Multiscreen快速上手
原文链接:Hello, Android Multiscreen Quickstart. 译文链接:Hello,Android Multiscreen快速上手 本部分介绍利用Xamarin.Androi ...
- [译]:Xamarin.Android开发入门——Hello,Android快速上手
返回索引目录 原文链接:Hello, Android_Quickstart. 译文链接:Xamarin.Android开发入门--Hello,Android快速上手 本部分介绍利用Xamarin开发A ...
- 快速上手seajs——简单易用Seajs
快速上手seajs——简单易用Seajs 原文 http://www.cnblogs.com/xjchenhao/p/4021775.html 主题 SeaJS 简易手册 http://yslo ...
- Git版本控制Windows版快速上手
说到版本控制,之前用过VSS,SVN,Git接触不久,感觉用着还行.写篇博文给大家分享一下使用Git的小经验,让大家对Git快速上手. 说白了Git就是一个控制版本的工具,其实没想象中的那么复杂,咱在 ...
- Objective-C快速上手
最近在开发iOS程序,这篇博文的内容是刚学习Objective-C时做的笔记,力图达到用最短的时间了解OC并使用OC.Objective-C是OS X 和 iOS平台上面的主要编程语言,它是C语言的超 ...
- Netron开发快速上手(二):Netron序列化
Netron是一个C#开源图形库,可以帮助开发人员开发出类似Visio的作图软件.本文继前文”Netron开发快速上手(一)“讨论如何利用Netron里的序列化功能快速保存自己开发的图形对象. 一个用 ...
- Netron开发快速上手(一):GraphControl,Shape,Connector和Connection
版权所有,引用请注明出处:<<http://www.cnblogs.com/dragon/p/5203663.html >> 本文所用示例下载FlowChart.zip 一个用 ...
随机推荐
- 面试连环炮系列(六):Dubbo应用为什么要部署Zookeeper
Dubbo应用为什么要部署Zookeeper? Zookeeper用来注册和发现服务,简单说就是提供端注册接口信息到Zookeeper,调用端在Zookeeper上查找接口对应的服务IP和端口.由于Z ...
- 现代“十二要素应用”与 Kubernetes
"十二要素应用"为开发SaaS应用提供了方法上的指导,而Docker能够提供打包依赖,解耦后端服务等特性,使得两者非常吻合.这篇文章介绍了Docker特性怎样满足了开发" ...
- WSL2(预览版)体验笔记
WSL2安装 WSL2在今年5月份Microsoft Build大会上发布了,但至今Windows10一直没收到更新推送,我想这么久过去就算没进入正式,至少也到了RC版了吧,于是开始折腾准备体验一把. ...
- RDP矢量数据压缩算法
在绘制对象边缘时涉及到了这个算法,记录一下. 该算法递归进行,首先设定一个阈值,在点集的第一个点和最后一个点间拉一条线段,找出剩下的点集中离线段最远的一个点,如果该点到线段的距离小于阈值则舍弃中间的所 ...
- 转载 SAP用户权限控制设置及开发
创建用户SU01 事务码:SU01,用户主数据的维护,可以创建.修改.删除.锁定.解锁.修改密码等 缺省:可以设置用户的起始菜单.登录的默认语言.数字显示格式.以及日期和时间的格式设置 参数:SAP很 ...
- Android框架式编程之Lifecycle
Lifecycle官方文档地址:https://developer.android.com/topic/libraries/architecture/lifecycle. 一.为什么要使用Lifecy ...
- jQuery - 拦截所有Ajax请求(统一处理超时、返回结果、错误状态码 )
样例代码: <html> <head> <title>hangge.com</title> <meta charset="utf-8&q ...
- Java+TestNG+Maven+Excel+IDEA接口自动化入门(一)环境配置
前置: 1.本机环境安装了maven并配置环境变量 2.本机环境安装了IDEA软件 3.本机环境安装了Java jdk 8版本 4.有一定java和maven基础 因为以上网上例子很多,就不再重复赘述 ...
- PC上装VM上装虚拟机
1.虚拟机网卡选择桥接模式 2.查看本PC机的网络 3.到/etc/sysconfig/network-scripts,修改网卡,vi ifcfg-ens33 4.重新/etc/init.d/netw ...
- JSON.parse和JSON.stringify方法
1.JSON.parse(“要转换的数据”) 2.JSON.stringify(“要转化的数据”) 3.首先,两个方法的用法是有差别的: ①.JSON.stringify是从一个对象中解析出字符串 ② ...