[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 一个用 ...
随机推荐
- oracle 字符串转为数字排序
select * from user order by to_number(dept_id) asc
- Linux - CentOS 7 通过Yum源安装 MySql 5.7
添加MySQL Yum存储库 从官网下载最新的mysql源 官网地址:https://dev.mysql.com/downloads/repo/yum/ 选择并下载适用于平台的发行包. 然后,在Lin ...
- Pikachu-File Inclusion, Unsafe file download & Unsafe file upload
Pikachu-File Inclusion, Unsafe file download & Unsafe file upload 文件包含漏洞 File Inclusion(文件包含漏洞)概 ...
- 13-Node.js学习笔记-MongoDB
数据库相关概念 在一个数据库软件最终可以包含多个数据仓库,在每个数据仓库中可以包含多个数据集合,每个数据集合中可以包含多条文档(具体的数据) database: 数据库,mongoDB数据库软件中可以 ...
- Http中URI协议 和URL协议的区别和联系
虽然说URL和URI是整个网络协议栈很常用的东西.可是,假如你去面试求职者其中的差别,估计十个人有八个人答复不上来. 想要熟悉基础知识的朋友最好还是看一下我这个文章. “A Uniform Resou ...
- 【AGC028D】Chord
Problem Description 给定一个圆,圆上均等地放着 \(2n\) 个点,已有 \(k\) 对点之间连好了边,从中选择剩下 \(n-k\) 对点随意连边. 求所有连边方案中,联通块的个数 ...
- 在IIS上部署 .Net Core 3.0 项目踩坑实录
在IIS上部署 .Net Core 3.0 项目的主要流程有: 安装并启用IIS 安装AspNetCoreModuleV2 添加.配置网站 设置应用程序池 通过VS发布 一.安装并启用IIS: 安装了 ...
- C# -- RSA加密与解密
1. RSA加密与解密 -- 使用公钥加密.私钥解密 public class RSATool { public string Encrypt(string strText, string st ...
- springboot~yml里的自定义配置~续
之前写了关于读取自定义配置的文章springboot~yml里的自定义配置,而今天主要说一下对复杂配置信息的读取方法,我们简单的配置用@Value注解就可以了,而结构复杂的一般使用@Configura ...
- 微服务-Springboot+Redis缓存管理接口代码实现
废话少说,上代码,结合代码讲解: 一.创建maven工程:导入依赖: <packaging>war</packaging><!--修改jdk的版本--><pr ...