Numpy科学计算从放弃到入门
什么是NumPy
NumPy是Python科学计算的基础包,不仅是python中使用最多的第三方库,还是SciPy、Pandas等数据科学的基础库。所提供的结构比Python自身的更高级、更高效。
可以说,NumPy所提供的数据结果是Python数据分析的基础。
标准的Python用列表list保存数组的值,list的元素在系统中内存是分散存储的,而Numpy的数组结构是存储在一个均匀连续的内存块中,遍历所有的元素更高效,节省了计算资源。
主要提供了以下功能:
- 快速高效的多维数组对象的ndarray
- 用于对数组执行元素级计算以及直接对数组执行数学运算的函数
- 用于读写硬盘上基于数组的数据集的工具
- 线性代数运算、傅立叶变换,以及随机数组生成
- 用于将C、C++、Fortran代码集成到Python的工具
- 作为算法之间传递数据的容器,对于数值型数据,Numpy数组在存储和处理数据时要比内置的Python数据结构高效得多
numpy提供了一个ndarray对象,多维数组的含义,维度称为rank(秩),每个线性的数组称为一个axes(轴)。数组是有属性的,可以通过函数shape获得数组的大小,通过dtype获得元素的属性
相关帮助文档
一、如何创建数组
array
将输入数据(列表、元组、数组或其他序列类型)转换为ndarray。要么推断出dtype,要么显示指定dtype
asarray
将输入转换为ndarray,如果输入本身就是一个ndarray就不再复制
array和asarray都可以将结构数据转化为ndarray,但是主要区别就是当数据源是ndarray时,array仍然会copy出一个副本,占用新的内存,但asarray不会arange
类似内置的range,返回一个ndarray
linespace
生成等差数列,可以指定包含名都不包含终点值zeros、zeros_like
根据指定的形状和dtype创建一个全是0的数组。
zeros_like以另一个数组为参数,并根据其形状和dtype创建一个全0数组
ones、ones_like
根据指定的形状和dtype创建一个全是1的数组。
ones_like以另一个数组为参数,并根据其形状和dtype创建一个全1数组
empty、empty_like
类似ones和ones_like,只是产生的是全0数组eye、identity
创建一个正方的N*N单位矩阵,对角线为1,其余为0
二、如何访问数组
下标索引
arr2d=np.array([[1,2,3],[4,5,6],[7,8,9]])
arr2d[0][2]和arr2d[0,2]是等价的切片索引
可以一次传入多个切片,
arr2d[:2, 1:]布尔型索引
将data中所有负值都设置为0
data[data < 0] = 0
- 选出所有名字为“cqh”的所有行
data[names == 'cqh']
- 整数索引
利用整数数组进行索引
arr = np.empty((8,4))
for i in range(8):
arr[i] = i
传入指定顺序
arr[[4,3,0,6]]
* 负数索引
arr[[-3,-5,-7]]
- 方形索引
使用np.ix_方法,可以将两个一维整数数组转换为一个用于选取方形区域的索引
arr = np.arange(32).reshape((8,4))
获取行[1,5,7,2],列[0,3,1,2],为
arr[np.ix_([1,5,7,2],[0,3,1,2])]
相当于执行了
arr[[1,5,7,2]][:,[0,3,1,2]]
错误方法:
arr[[1,5,7,2],[0,3,1,2]]
三、如何做算数运算
x1 = np.arange(1,11,2)
x2 = np.linspace(1,9,5)
np.add(x1, x2)
np.subtract(x1, x2)
np.multiply(x1, x2)
np.divide(x1, x2)
np.power(x1, x2)
np.remainder(x1, x2)
四、如何使用统计函数
默认axis=0代表沿着列统计,axis=1代表沿着行统计
- amax:矩阵中的最大值
- amin:矩阵中的最小值
- ptp:统计最大值与最小值的差
- percentile:统计数组的百分位数
- median:统计中位数
- mean:平均数
- average:加权平均值(需要传入各个元素的权重)
- std:标准差
- var:方差
五、如何转置数组和反转
- reshape
arr = np.arange(15).reshape((3,5))
- T
arr.T
六、如何去重、计算差集并集等集合操作
- unique(x):计算x中的唯一元素,并返回有序结果
- intersect1d(x,y):计算x和y中的公共元素,并返回有序结果
- union(x,y):计算x和y的并集,并返回有序结果
- in1d(x,y):得到一个表示“x的元素是否包含在y”的布尔型数组
- setdiff1d(x,y) 集合的差,元素在x中且不在y中
- setxor1d(x,y) 集合的对称差,存在于一个数组中但不同时存在两个数组中的元素
七、如何生成随机数
rand:产生[0,1]均匀分布的样本值
uniform:产生在[0,1]中均匀分页的样本值
randn:产生正态分布(平均值0,标准差1)的样本值,类似MATLAB接口
normal:生成标准正态分布的样本数组
randint:在给定的上下限范围内随机选取整数
seed:确定随机数生成器的种子
permutation:返回一个序列的随机排列
shuffle:对一个序列就地随机排列
bionmial:产生二项分布的样本值
beta:生产Beta分布的样本值
chisquare:产生卡方分布的样本值
gamma:产生Gamma分布的样本值
八、如何输入输出文件
以二进制格式保存到磁盘
- np.save:保存到磁盘
- np.savez:将多个数组保存到一个压缩文件中,加载时得到一个字典对象
- np.load:从磁盘加载
存取文本文件
- loadtxt:指定各种分隔符
- savetxt:将数组写到以某种分隔符隔开的文本文件
Numpy科学计算从放弃到入门的更多相关文章
- python安装numpy科学计算模块
解决两个问题: (1)Import Error: No module named numpy (2)Python version 2.7 required, which was not found i ...
- numpy科学计算库的基础用法,完美抽象多维数组(原创)
#起别名避免重名 import numpy as np #小技巧:print从外往内看==shape从左往右看 if __name__ == "__main__": print(' ...
- Python的工具包[0] -> numpy科学计算 -> numpy 库及使用总结
NumPy 目录 关于 numpy numpy 库 numpy 基本操作 numpy 复制操作 numpy 计算 numpy 常用函数 1 关于numpy / About numpy NumPy系统是 ...
- Numpy科学计算
NumPy介绍 NumPy(Numerical Python)是一个开源的Python科学计算库,用于快速处理任意维度的数组. NumPy支持常见的数组和矩阵操作.对于同样的数值计算任务,使用Nu ...
- python学习笔记(2):科学计算及数据可视化入门
一.NumPy 1.NumPy:Numberical Python 2.高性能科学计算和数据分析的基础包 3.ndarray,多维数组(矩阵),具有矢量运算的能力,快速.节省空间 (1)ndarray ...
- python numpy 科学计算通用函数汇总
import numpy as np #一元函数 #绝对值计算 a = -1b = abs(a)print(b)输出: 1 #开平方计算 a = 4b = np.sqrt(a)print(b)输出: ...
- Numpy科学计算工具
Numpy初探 Numpy基础数据结构 Numpy数组是一个多维数组,称为ndarray.其由两部分组成: 实际的数据 描述这些数据的原数据 导入该库: import numpy as np 多维数组 ...
- python numpy科学计算和数据分析的基础包
import numpy as np #创建ndarray# data1 = [6, 5, 7, 1, 3]# arrl = np.array(data1)# print(arrl)#多维列表创建nd ...
- 科学计算三维可视化---Mayavi入门(Mayavi库的基本元素和绘图实例)
一:Mayavi库的基本元素 .处理图形可视化和图形操作的mlab模块 .操作管线对象,窗口对象的api (一)mlab模块 (二)mayavi的api 二:快速绘图实例 (一)mlab.mesh的使 ...
随机推荐
- 51nod 1307绳子和重物
1307 绳子与重物 题目来源: Codility 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 收藏 关注 有N条绳子编号 0 至 N - 1,每条绳子后 ...
- JavaSE基础---异常
异常 Throwable----具备可拋性:就是该体系中的类和对象都可以被关键字throw或throws所操作. |---Error ---错误,一般不编写针对性处理方式 |---Exception- ...
- 基于JWT的Token登录认证(一)
1.JWT简介 JSON Web Token(缩写 JWT),是目前最流行的跨域认证解决方案. session登录认证方案:用户从客户端传递用户名.密码等信息,服务端认证后将信息存储在session中 ...
- quartz关闭DBUG日志
引用了Quartz组件后,打印日志时,整天都有相应的调试信息打印出来,严重影响了查找日志效率,谷歌一番后,修改nlog配置文件即可 <?xml version="1.0" e ...
- N9K 40G接口一分4*10G配置
Breakout InterfacesCisco NX-OS supports the breakout of high bandwidth 40G interfaces at the module ...
- 【Linux】grep笔记
Linux grep命令用于查找文件里符合条件的字符串. 参数: -a 或 --text : 不要忽略二进制的数据. -A<显示行数> 或 --after-context=<显示行数 ...
- MFC入门
目录 001.MFC_应用程序类型 002.MFC_对话框_静态文本_编辑框 003.MFC_对话框_访问控件_7种方法_A 004.MFC_对话框_访问控件_7种方法_B 005.M ...
- mysql中information_schema.schemata字段说明
1. 获取所有数据库信息(SCHEMATA) show databases; 查看用户下所有数据库信息:SCHEMATA表:提供了关于数据库中的库的信息.详细表述了某个库的名称,默认编码,排序规则.各 ...
- 004 ceph存储池
介绍:前面已经使用deploy和ansble部署了ceph集群,现在对集群的池进行简单介绍和简单操作 一.部分概念 池是ceph存储集群的逻辑分区,用于存储对象 对象存储到池中时,使用CRUSH规则将 ...
- 什么是Ceph存储?什么是分布式存储?简单明了带你学Ceph--<1>
Ceph存储介绍 为什么要用Ceph Ceph是当前非常流行的开源分布式存储系统,具有高扩展性.高性能.高可靠性等优点,同时提供块存储服务(rbd).对象存储服务(rgw)以及文件系统存储服务(cep ...