读书笔记五--numpy
数组转置和轴对换
转置是重塑的一种特殊形式,返回的是源数据的视图(不会进行任何复制操作)。数组不仅有transpose方法,还有一个特殊的T属性:
arr=np.arange().reshape((,)) arr
Out[]:
array([[ , , , , ],
[ , , , , ],
[, , , , ]]) arr.T
Out[]:
array([[ , , ],
[ , , ],
[ , , ],
[ , , ],
[ , , ]])
进行矩阵计算时,经常需要用到该操作,比如利用np.dot计算矩阵内积:
arr=np.random.randn(,) np.dot(arr.T,arr)
Out[]:
array([[2.39679519, 0.23607287, 0.27316386],
[0.23607287, 5.3207093 , 0.6367557 ],
[0.27316386, 0.6367557 , 3.50480009]])
对于高维数组,transpose需要得到一个由轴编号组成的元组才能对这些轴进行转置:
arr=np.arange().reshape((,,)) arr
Out[]:
array([[[ , , , ],
[ , , , ]], [[ , , , ],
[, , , ]]]) arr.transpose((,,))
Out[]:
array([[[ , , , ],
[ , , , ]], [[ , , , ],
[, , , ]]])
还有一个swapaxes方法,它需要接收一对轴编号:
arr
Out[]:
array([[[ , , , ],
[ , , , ]], [[ , , , ],
[, , , ]]]) arr.swapaxes(,)
Out[]:
array([[[ , ],
[ , ],
[ , ],
[ , ]], [[ , ],
[ , ],
[, ],
[, ]]])
swapaxes也是返回源数据的视图(不会进行任何复制操作)。
通用函数:快速的元素级数组函数
x=np.random.randn(8) x
Out[7]:
array([-0.45367765, 0.45448697, 0.05901557, -1.14350864, 0.93985719,
-1.37405764, 0.54604076, -1.52919879]) y=np.random.randn(8) y
Out[9]:
array([-2.44401238, -0.57907323, -2.42303926, 0.25004382, 0.78757902,
0.13324314, 0.8643189 , 0.6892275 ]) #x,y中的每个元素进行对比,选较大的值
np.maximum(x,y)
Out[10]:
array([-0.45367765, 0.45448697, 0.05901557, 0.25004382, 0.93985719,
0.13324314, 0.8643189 , 0.6892275 ])
有些ufunc可以返回多个数组,modf就是一个例子,它是Python内置函数divmod的矢量化版本,用于浮点数组的小数和整数部分。
arr=np.random.randn(7)*5 arr
Out[12]:
array([ 1.36965276, -0.29453957, 5.0043914 , -3.93568688, -4.50608498,
1.40926456, -1.99294205]) #modf返回的2个数组分别是浮点数的小数部分和整数部分
np.modf(arr)
Out[13]:
(array([ 0.36965276, -0.29453957, 0.0043914 , -0.93568688, -0.50608498,
0.40926456, -0.99294205]), array([ 1., -0., 5., -3., -4., 1., -1.]))
abs、fabs | 计算整数、浮点数或复数的绝对值。对于非复数值,可以使用更快的fabs |
sqrt | 计算各元素的平方根,相当于arr**0.5 |
square | 计算各元素的平方,相当于arr**2 |
exp | 计算各元素的指数 |
add | 将数组中对应的元素相加 |
substract | 从第一个数组中减去第二个数组中的元素 |
multiply | 数组元素相乘 |
divide、floor_divide | 除法或向下圆整除法(丢弃余数) |
利用数组进行数据处理
points=np.arange(-5,5,0.01) xs,ys=np.meshgrid(points,points) ys
Out[16]:
array([[-5. , -5. , -5. , ..., -5. , -5. , -5. ],
[-4.99, -4.99, -4.99, ..., -4.99, -4.99, -4.99],
[-4.98, -4.98, -4.98, ..., -4.98, -4.98, -4.98],
...,
[ 4.97, 4.97, 4.97, ..., 4.97, 4.97, 4.97],
[ 4.98, 4.98, 4.98, ..., 4.98, 4.98, 4.98],
[ 4.99, 4.99, 4.99, ..., 4.99, 4.99, 4.99]])
现在把这两个数组当做两个浮点数那样编写表达式:
import matplotlib.pyplot as plt z=np.sqrt(xs**2+ys**2) z
Out[21]:
array([[7.07106781, 7.06400028, 7.05693985, ..., 7.04988652, 7.05693985,
7.06400028],
[7.06400028, 7.05692568, 7.04985815, ..., 7.04279774, 7.04985815,
7.05692568],
[7.05693985, 7.04985815, 7.04278354, ..., 7.03571603, 7.04278354,
7.04985815],
...,
[7.04988652, 7.04279774, 7.03571603, ..., 7.0286414 , 7.03571603,
7.04279774],
[7.05693985, 7.04985815, 7.04278354, ..., 7.03571603, 7.04278354,
7.04985815],
[7.06400028, 7.05692568, 7.04985815, ..., 7.04279774, 7.04985815,
7.05692568]])
plt.imshow(z,cmap=plt.cm.gray);plt.colorbar()
Out[22]: <matplotlib.colorbar.Colorbar at 0xc95aef0>
读书笔记五--numpy的更多相关文章
- 悟道—位IT高管20年的职场心经(读书笔记五)
悟道--一位IT高管20年的职场心经 第五章 搞定老板 "老板就是老板" 这一点,你可能会忘了,他一定不会忘: "老板不会总是老板" 这一点,他可能会忘,你最好 ...
- 《JavaScript 高级程序设计》读书笔记五 引用类型
一 Object类型 a.两种创建方式: 1.new+构造函数Object; 2.对象字面量表示法: b.两种访问属性方式: 1.点表示法(.属性): 2.方括号([“属性”]): 二 Arr ...
- Android驱动开发读书笔记五
第五章 本章介绍了S3C6410开发板的功能,开发板的不同主要是在烧录嵌入式系统的方式不同,以及如何在此开发板上安装Android. 1.安装串口调试工具minicom 首先需要一根USB转串口线,由 ...
- 机器学习实战读书笔记(五)Logistic回归
Logistic回归的一般过程 1.收集数据:采用任意方法收集 2.准备数据:由于需要进行距离计算,因此要求数据类型为数值型.另外,结构化数据格式则最佳 3.分析数据:采用任意方法对数据进行分析 4. ...
- 《实战Java高并发程序设计》读书笔记五
第五章 并行模式与算法 1.单例模式 是一种对象创建模式,用于产生一个对象的具体实例,它可以确保系统一个类只产生一个实例. 对于频繁创建使用的对象可以省略new 操作花费的时间,可以减少系统开销. 由 ...
- 锋利的jQuery--编写jQuery插件(读书笔记五)[完结篇]
1.表单验证插件Validation 2.表单插件Form 3.动态事件绑定插件livequery 可以为后来的元素绑定事件 类似于jQuery中的live()方法 4.jQuer ...
- 《CLR.via.C#第三版》第二部分第10,11章节读书笔记(五)
第10章是对 属性 做阐述 属性本质上是方法 匿名类型的使用: }; Console.WriteLine("Name={0},Year={1}",o1.Name,o1.Year); ...
- R语言实战读书笔记(五)高级数据管理
5.2.1 数据函数 abs: sqrt: ceiling:求不小于x的最小整数 floor:求不大于x的最大整数 trunc:向0的方向截取x中的整数部分 round:将x舍入为指定位的小数 sig ...
- Machine Learning for hackers读书笔记(五)回归模型:预测网页访问量
线性回归函数 model<-lm(Weight~Height,data=?) coef(model):得到回归直线的截距 predict(model):预测 residuals(model):残 ...
随机推荐
- CF1205B
CF1205B 由鸽巢原理n比较大的时候直接输出3 然后剩下的就可以跑最小环 #include<iostream> #include<cstdio> #include<c ...
- Spring学习笔记(5)——IoC再度学习
学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的,今天和大家 ...
- 人生苦短,我学PYTHON
人生苦短我学PYTHON 坚持 努力
- day11 python名称空间 作用域
day11 python 一.三元运算符 def func(a, b): return a if a > b else b print(func(44,66)) 二:函数 ...
- Qt:代码里存在中文时带来的问题
一.报错: 常量中有换行符 方法1: 把文本文件转化为unicode或者utf-8, 同是还要带上QString::fromLocal8Bit() 还有其他方法,感觉不靠谱 二.显示异常:乱码 QSt ...
- SQL的多表查询(Navicat)
-- 部门表 CREATE TABLE dept ( id INT PRIMARY KEY PRIMARY KEY, -- 部门id dname VARCHAR(50), -- 部门名称 loc VA ...
- Express post请求无法解析参数的原因
router.post('/', function(req, res) { console.log(req.body); console.log(req.body.name); console.log ...
- php手册的一些思考
函数手册一定要认真看,很多用法都不太清楚: array array_merge ( array $array1 [, array $... ] ) array_merge() 将一个或多个数组的单 ...
- 线段树区间合并——cf1217E
/* 定义:多重集s的元素和是sum,对于sum的第i位为x,如果s里找不到第i位也是x的元素,那么称这个多重集为bad, 现在给定一个 序列a 两种操作 1 i x:将序列第i个元素改为x 2 l ...
- Centos操作命令
查看已经开放的端口:firewall-cmd --list-ports 开启端口:firewall-cmd --zone=public --add-port=80/tcp --permanent 重新 ...