利用python进行数据分析学习笔记-Numpy篇
来源:互联网 发布:淘宝旗舰店申请 编辑:程序博客网 时间:2024/05/21 19:39
利用python进行数据分析学习笔记
Numpy基础:数组和矢量的计算
ndarray:一种多维数组对象
ndarray是什么?
一种通用的同构数据多维容器,每个ndarray包含一个shape和一个dtype属性。
创建ndarray
最常用的方式
>>>import numpy as np>>>data = [1,2,3,4,5,6]>>>array1 = np.array(data)>>>array1array([1,2,3,4,5,6])
其他方式
- np.asarray
- np.arange #类似于内置的range
- np.ones np.oneslike #指定shape和dtype创建一个全1数组,oneslike以另一个ndarray为参数
- np.zeros np.zeroslike #创建全零数组
- np.empty np.empty_like #分配内存空间但不填充值
- np.eye 、np.identity #创建单位矩阵
In[2]np.eye(5)Out[3]:array([[ 1., 0., 0., 0., 0.], [ 0., 1., 0., 0., 0.], [ 0., 0., 1., 0., 0.], [ 0., 0., 0., 1., 0.], [ 0., 0., 0., 0., 1.]])
ndarray的数据类型
查看数据类型arr.dtype
显示地更改数据类型arr.astype()#括号中可以是具体类型,也可以是某个数组,调用该数组的类型
In[1]:arr = [(1,2,3,4,5)]In[2]:arr.dtypeOut[3]:dtype('int64')In[4]:float_arr = arr.astype(np.float64)
数组和标量之间的运算
- 大小相同的数组运算将应用到元素级
- 数组和标量的运算将传播到各个元素
- 大小不同的数组间运算称为广播
基本的索引和切片
- 低纬度比较简单,略过
- 高纬度切片,索引相组合
arr[:2,1:,:]#表示0轴0~2除去2,1轴1~n包括1,2轴全部
- 布尔型索引
# data[names!= 'bob',:2]# 使用&,|作为bool运算符,and、or在布尔数组中无效
- 花式索引:利用整数数组进行索引
arr[[4,3,0,6]]#表示选取这四行
arr[[1,4,3,7],[2,3,1,0]]#选取四个元素arr[[1,4,3,7],[:,[2,3,1,0]]]#重叠部分相加构成一个方形区域arr[np.ix_[],[]] #效果与:,[]一致
数组的转置和轴对换
arr.T #简单的轴对换
transpose的运用
对多维数组,确定最底层的一个基本元素位置需要用到的索引个数即是维度对维度进行编号,就是我们所说的axis号(0,1,2),即shape元组的索引
transpose参数的真正意义在于对这个shape元组的索引
arr = array([[[ 0, 1, 2, 3], [ 4, 5, 6, 7]], [[ 8, 9, 10, 11], [12, 13, 14, 15]]])In[]:arr.shapeOut[]:(2,2,4)In[]:arr.transpose((1,0,2))Out[]:array([[[ 0, 1, 2, 3], [ 8, 9, 10, 11]], [[ 4, 5, 6, 7], [12, 13, 14, 15]]]) #transpose中的参数指的是轴号,原来是(0,1,2),转变成(1,0,2),可以把arr看做[[[0,0],[0,1]],[[1,0],[1,1]]],0,1互换后成为[[[0,0],[1,0]],[[0,1],[1,1]]]
swapaxes方法的用法和transpose类似
通用函数
常用一元ufunc:
- abs、fabs
- sqrt
- square
- exp
- log、log10、log2、log1p #log1p指的是log(1+x)
- sign
- ceil #返回ceiling值,即大于等于该值的最小整数
- floor #小于等于该值的最大整数
- rint #四舍五入到整数,并保留dtype值
- modf #将元素的整数和小数部分以两个数组返回
- isnan
- isfinite、isinf #返回是、不是有穷值的布尔型数组
- cos、cosh、sin、sinh、tan、tanh
- arc…
- logical_not #计算各元素not x的真值。相当于-arr
常用二元ufunc
- add # np.add(x,y)
- subtract # 减
- multiply # 乘
- divide、floor_divide # 除法、丢弃余数
- power np.power(a,b) # 计算a^b
- maximum、fmax
- minmun、fmin
- mod # 余数
- copysign 第二组元素中的符号复制给第一组元素
- greater、greater_equal、less、less_equal、equal、not_equal >、>=、<、<=、==、!= 返回布尔型数组
- logical_and、logical_or、logical_xor 逻辑运算
利用数组进行数据处理
用数组表达式代替循环,通常被称为矢量化
numpy.where是if condition else y 的矢量化版本
result = np.where(cond,xarr,yarr)np.where(cond1 & cond2,a,np.where(cond1,b,np.where(cond2,c,d))) #将for循环改编成嵌套的where表达式
数学和统计方法
可以通过数组上的一组数学函数对整个数组或某个轴向的数据进行统计计算
既可以当做数组的实例方法调用arr.mean(),也可作为Numpy函数使用,np.mean(arr)
基本数组统计方法
- sun
- mean
- std 、var #标准差和方差,自由度默认为n,可调
- min、max
- argmin 、argmax #最大和最小元素的索引
- cumsun #所有元素的累积和
- cumprod #所有元素的累计积
- 对于布尔型数组,常用sum对True值计数,any用于测试是否存在True,all用于检查是否都为True
- **排序**sort,np.sort返回已排序副本,arr.sort()修改数组本身,排序在计算分位数时是最简单的方法
数组的集合运算
- unique(x) #计算x中的唯一元素并返回有序结果
- intersect1d(x,y) #计算x,y中的公共元素并返回有序结果
- union1d(x,y) #计算并集,返回有序结果
- in1d(x,y) #返回x是否包含于y的布尔型数组
- setdiff1d(x,y) #集合的差,在x中且不在y中
- setxor1d(x,y) #对称差,存在于一个数组但不同属两个数组
用于数组的文件输入输出
np.load() #用于读取磁盘上的npy文件
np.save() #用于将数组保存为npy文件
np.savez() #讲多个数组保存为压缩文件
线性代数
.dot方法用于矩阵间乘法,其它常用线性代数函数自己查吧,不写了
随机数生成
- seed #确定随机数生成器的种子
- permutation # 返回一个系列的随机排列或随机排列的范围
- shuffle # 一个系列的就地随机排列
- rand #产生均匀分布的样本值
- randint #给定范围随机选取整数
- randn # 产生正态分布样本值
- binomial # 产生二项分布样本值
- normal #产生正态(高斯)分布的样本值
- beta # 产生Beta分布样本值
- chiquare #产生卡方分布的样本值
- gamma # Gamma分布
- uniform #[0,1)均匀分布
阅读全文
0 0
- 利用python进行数据分析学习笔记-Numpy篇
- 利用python进行数据分析学习笔记—Numpy基础知识
- 利用Python进行数据分析笔记-第四章Numpy
- 《利用python进行数据分析》学习笔记(二)--NumPy(1)
- 利用python进行数据分析-NumPy基础
- 利用Python进行数据分析之Numpy
- 利用Python进行数据分析 学习笔记
- 利用python进行数据分析学习笔记-Pandas篇
- 利用python进行数据分析学习笔记—python基础知识
- 『利用Python进行数据分析学习』第四章:numpy基础学习
- 《利用Python进行数据分析》笔记---第4章NumPy基础:数组和矢量计算
- 利用python进行数据分析-NumPy基础2
- 利用python进行数据分析-NumPy高级应用
- 利用python进行数据分析(二):Numpy数组
- 《利用Python进行数据分析》第四章-numpy基础
- 《利用python进行数据分析》学习笔记(一)
- 利用python进行数据分析(学习笔记)
- 《利用Python进行数据分析》第二章-学习笔记
- golang解析json格式
- C++实现程序开机自启动
- Linux 系统命令及其使用详解
- HTTP响应状态码
- 未能找到程序集“Microsoft.DirectX.DirectInput, Version=1.0.2902.0, Culture=neutral, PublicKeyToken=31bf3856a
- 利用python进行数据分析学习笔记-Numpy篇
- 关于微信扫码支付
- greenDAO的使用详解---(3)greenDAO3.2.2数据库的升级bug解决
- category用法
- golang使用sqlite
- Redux代理Type
- CefSharp 集成谷歌浏览器详解(二)--官网示例解析1启动
- mysql中对sql的调优方法
- php函数相关(3):函数体中局部变量改变全局变量