[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 一个用 ...
随机推荐
- windows客户端访问FTP服务器
客户端访问FTP服务器步骤: 首先双击此电脑,在弹出的窗口输入如下信息 刚安装完的FTP服务器只有一个pub目录,因为这里是使用匿名用户登录的 FTP服务器默认的匿名目录在/var/ftp/pub/下 ...
- 精通awk系列(16):gawk支持的正则表达式
回到: Linux系列文章 Shell系列文章 Awk系列文章 gawk支持的正则 . # 匹配任意字符,包括换行符 ^ $ [...] [^...] | + * ? () {m} {m,} {m,n ...
- 【译】浅谈SOLID原则
SOLID原则是一种编码的标准,为了避免不良设计,所有的软件开发人员都应该清楚这些原则.SOLID原则是由Robert C Martin推广并被广泛引用于面向对象编程中.正确使用这些规范将提升你的代码 ...
- net.sf.json将string转为map
背景 改一个以前的项目,项目里只有这个包,虽然我想用gson或者fastjson,然而并不想引入新的jar.于是使用这个,特此记录,感觉贼不好用. 实现代码 entity.getData()的值:{a ...
- iOS 中使用 webSocket
iOS 中使用 webSocket 是服务器和app之间的一种通信方式 webSocket 实现了服务端推机制(主动向客户端发送消息).新的 web 浏览器全都支持 WebSocket,这使得它的使用 ...
- [20191126]探究等待事件的本源2.txt
[20191126]探究等待事件的本源2.txt --//做一个测试,验证如果写入控制文件慢也会影响提交性能. 1.环境:SCOTT@book> @ ver1PORT_STRING ...
- diango中的MTV——FBV/CBV以及装饰器的复用问题解决
MVC M: model 模型 与数据库交互 V: view 视图 HTML C:controller 控制器 流程 和 业务逻辑 MTV M:model ORM T:template 模板 HTML ...
- 关于在Arduino下STM32编程——RTC函数解析
注意:相关RTC基础知识这里不提! 该库头文件引用: #include <RTClock.h> 该库所在Arduino位置: 初始化RTC相关时钟 Arduino版的库里初始化配置PW ...
- Community structure enhanced cascade prediction 笔记
目录 一.摘要 二.杂记 三.模型思想 四.实验 五.其他 六.参考文献 一.摘要 深度学习不用去手工提取特征,但是现有深度模型没有在传播预测任务中使用社区结构.所以提出一个CS-RNN框架,把社区在 ...
- 手机投屏工具与HOSTS切换工具
ApowerMirror windows -->switchhosts