Numpy的使用方法
Numpy
多维数组及处理数组的能力
两种对象
- ndarray:存储单一数据的多维数组
- ufunc:对数组进行处理的函数
数组
一维数组
np.array([1,2,3])
指定类型:np.array(([1, 2], [3, 4]), dtype=complex)
二维数组
np.array([[1,2],[3,4]])
三维数组
b=np.array([[[1,2],[3,4]],[[8,5],[6,7]]])取8:b[1,0,0] #第一个矩阵的m行n列
切片:b[1,m:n,m1:n1] #第一个矩阵的m行到n行的m1列到n1列的数索引:b[b>7]
花式索引:b[[m1,m2,m3],[n1,n2,n3]] #mi行ni列的数(跳着取)
全零(0)矩阵
一维:np.zeros(2) #1行2列
二维:np.zeros((2,3)) #2行3列
三维:np.zeros((3,4,2)) #3个4行2列的全零阵
全1矩阵
一维:np.ones(2) #一行两列
二维:np.ones((2,3)) #2行3列
三维:np.ones((2,3,4)) #2个3行4列的数组组成的3维数组
单位阵
np.eye(3) #3维的单位阵
常数阵
np.full((2,3),10) #2行3列的全是10的
顺序数组
一维:np.arange((10)) #从0-9 (类似range)二维:np.arange(6,12).reshape(2,3)np.arange(1,11,2,dtype=float) # 2代表步长,dtype代表创建的数值类型np.arange(1,11,2).reshape(n,m) #重新调整数组,调整为n行m列(n或者m值为-1,系统根据另一个值计算行或列),三维:np.arange(24).reshape(2,3,4)
等差数列
np.linspace(1,3,4,endpoint=False) #1,3中间平均取4个(默认取到结束值),endpoint是否取最后一个,
等比数列
np.logspace(1,3,num=5,endpoint=True,base=10.0,) #1,3中间取5个(取到结束值),公比base
np.empty():依赖内存随机
函数empty创建一个内容随机并且依赖内存状态的数组。默认创建的数组类型(dtype)都是float64。二维:np.empty((2,3))
三维:np.empty((2,3,1))
np.indices((3,3))
indices()将创建一组数组(堆叠为一个更高维度的数组),每个维度一个,每个都代表该维度的变化。
np.indices((3,3)):[[[0, 0, 0], [1, 1, 1], [2, 2, 2]], [[0, 1, 2], [0, 1, 2], [0, 1, 2]]]
np.random.random()/np.random.ranint()
不包括尾数
二维:np.random.random((2,3))
三维:np.random.random((2,3,2))
np.random.ranint(1,8,size=(m,n))
数组的属性/方法
类型(type)
维数(ndim)
形状(shape)
a.shape[0] 行数
a.shape[1] 列数
改变数组形状
拉平数组(a.ravel())
直接修改( a.shape=(n,m))
reshape
大小(size)
返回矩阵元素的个数
矩阵中元素的类型(dtype)
类型有:int32,float64
类型名字(dtype.name)
数据类型转换(astype(int))
每个元素占得字节数(itemsize)
矩阵在内存中的位置(data)
数组的打印
一维数组被打印成行,二维数组成矩阵,三维数组成矩阵列表
如果一个数组用来打印太大了,NumPy自动省略中间部分而只打印角落。禁用NumPy的这种行为并强制打印整个数组,你可以设置printoptions参数来更改打印选项。np.set_printoptions(threshold=np.nan)
数组/矩阵的运算
+、-、*、/、幂、平方根、三角运算、对数、转置,where、unique
同型矩阵的对应元素操作
+:np.add(a,b)
-:np.subtract(a,b)
*:np.divide(a,b)
/:np.multiply(a,b)
幂:np.exp(a)
平方根:np.sqrt(a)
三角运算:np.sin()\np.cos()\np.tan()\..
对数:np.log(a)
转置:np.transpose(a)\a.T
位置:np.where(a>7)
去重:np.unique(去重的数字)
聚合函数
数组求和
总体求和:np.sum(a)a.sum()
每行求和:(axis:轴)np.sum(a,axis=1)
每列求和:np.sum(a,axis=0)
最大值(最小值)
总体求最值:np.min(a)\ a.min()np.max(a)\ a.max()
每行求最值:np.min(a,axis=1)np.max(a,axis=1)
每列求最值:np.min(a,axis=0)np.max(a,axis=0)
平均值
np.mean(a)
中位数
np.median(a)
累计求和
np.cumsum(a)
每次求和结果于下一个元素作用求和
相邻两个元素求差值
np.diff(a)
矩阵最小(大)值所在的位值
np.argmin(a)
np.argmax(a)拉伸成一行在。。。
可以有轴
矩阵元素的替换
np.clip(a,5,9)
在矩阵a中,`小于5的替换为5`, `大于9的替换为9`
矩阵的逐行排序
np.sort(a,axis=0/1)
合并/拼接、分割数组
合并/拼接数组
合并/拼接:np.concatenate((a,b)[,axis=0/1]) #axis=0:b在下,axis=1:b在右行拼接:np.vstack((a,b))列拼接:np.hstack((a,b))
分割数组
np.hsplit(a,3) #纵向分割数组为3份
np.vsplit(a,2) #横向分割数组为2份
导入txt文件
np.loadtext()
线性代数计算
矩阵和矢量积
np.dot(a,b) # 数组a,b的点积
np.vdot(a,b) # 向量a,b的点积
np.inner(a,b) # 数组a,b的内积
np.outer(a,b) # 数组a,b的外积
np.matmul(a,b) # 数组a,b的矩阵的成绩
np.tensordot(a,b [,轴]) #沿指定轴计算张量点积
np.linalg.matrix_power(a,n) #将方阵提高到(整数)幂n
分解
Cholesky分解
np.linalg.cholesky(a)
正定矩阵的分解:l=np.linalg.cholesky(b)得到下三角矩阵,np.dot(l,l.T)=b
(svd)奇异值分解
np.linalg.svd(a)非正定矩阵的分解:U,s,V=np.linalg.svd(b),S=np.array([[s[0],0],[0,s[1]]),则np.dot(U,np.dot(S,V)))=b
特征值
方阵特征值(特征向量)
np.linalg.eig(a)
Hermitian或对称矩阵的特征值(特征向量)
np.linalg.eigh(a [,UPLO])
一般矩阵的特征值
特征值、特征向量:u,v=np.linalg.eigvals(a)
计算Hermitian或者实对称矩阵的特征值
np.linalg.eigvalsh(s [,uplo])
范数/行列式/条件数/逆/迹/秩
逆
np.linalg.inv(a)
范数
np.linalg.norm(a[,ord,axis,keepdims])
默认求2范数,ord=1求1范数,ord=np.inf求无穷范数
1-范数:将矩阵沿列方向取绝对值求和,然后选出数值最大的那个值
2-范数:矩阵的最大特征值开平方
条件数
np.linalg.cond(x [,p])
行列式
np.linalg.det(a)
迹
np. trace(A)(主对角线上各元素之和)
秩
np.linalg.matrix_rank(A)
求解方程个反转矩阵
求解线性方程组或者线性标量方程组
np.linalg.solve(a,b)
求解x的张量方程:ax=b
np.linalg.tensorsolve(a,b)
将最小二乘解返回到线性矩阵方程
np.linalg.lstsq(a,b [,rcond])
Numpy的使用方法相关推荐
- numpy中amin()方法中维度axis=0 1 2 的理解
https://www.jianshu.com/p/6f58d7f39147 numpy中amin()方法中维度axis=0 1 2 的理解 axis=0 从最外一层的维度来比较 (对半比较 虽然 ...
- python怎么读取txt文件数据保存数组中-python将txt等文件中的数据读为numpy数组的方法...
实际中,很多数据都是存为txt文件.csv文件等,但是在程序中处理的时候numpy数组或列表是最方便的.本文简单介绍读入txt文件以及将之转化为numpy数组或列表的方法. 1 将txt文件读为lis ...
- numpy中reshape方法详解
numpy中reshape方法详解_zhanggonglalala的博客-CSDN博客_reshape
- python读txt文件 数组-python将txt等文件中的数据读为numpy数组的方法
实际中,很多数据都是存为txt文件.csv文件等,但是在程序中处理的时候numpy数组或列表是最方便的.本文简单介绍读入txt文件以及将之转化为numpy数组或列表的方法. 1 将txt文件读为lis ...
- Python numpy.median函数方法的使用
NumPy(Numerical Python的缩写)是一个开源的Python科学计算库.使用NumPy,就可以很自然地使用数组和矩阵.NumPy包含很多实用的数学函数,涵盖线性代数运算.傅里叶变换和随 ...
- 使用numpy数组索引方法获取指定行列位置的数值内容
使用numpy数组索引方法获取指定行列位置的数值内容 在numpy中,我们可以使用方括号索引[]语法方法获取一个或多个数组中的指定元素.本文将介绍如何使用此方法来获取二维numpy数组中指定行列位置的 ...
- matlab下调用python,numpy库函数的方法
matlab下调用python,numpy库函数的方法 Matlab 调用 Python 下的脚本 这篇博文的目的是为了解决博主在用matlab的eig函数时遇到的一个问题: 博主在用matlab下的 ...
- Python numpy.mat函数方法的使用
NumPy(Numerical Python的缩写)是一个开源的Python科学计算库.使用NumPy,就可以很自然地使用数组和矩阵.NumPy包含很多实用的数学函数,涵盖线性代数运算.傅里叶变换和随 ...
- Python numpy.corrcoef函数方法的使用
NumPy(Numerical Python的缩写)是一个开源的Python科学计算库.使用NumPy,就可以很自然地使用数组和矩阵.NumPy包含很多实用的数学函数,涵盖线性代数运算.傅里叶变换和随 ...
- Python numpy.atleast_1d函数方法的使用
NumPy(Numerical Python的缩写)是一个开源的Python科学计算库.使用NumPy,就可以很自然地使用数组和矩阵.NumPy包含很多实用的数学函数,涵盖线性代数运算.傅里叶变换和随 ...
最新文章
- 推荐爱奇艺开源的高性能网络安全监控引擎!
- 7、斐波那契数列、跳台阶、变态跳台阶、矩形覆盖------------剑指offer系列
- mysql数据类型查询命令_Linux命令:MySQL系列之三--mysql数据类型及SQL结构化查询语句使用...
- vue 动态修改路由参数
- Javascript高级程序设计第二版第七章匿名函数--笔记
- Nginx 的配置文件介绍
- UDT中的epoll
- 微信或者QQ如何制作请用右上角打开浏览器
- hdu4939思维DP
- FineCMS-v5.0.1漏洞审计
- [RK356x] [Firefly-Ubuntu] 1min教你在Ubuntu系统安装GCC开发工具
- 浩辰CAD建筑软件教程之门窗套
- Lua实现简单的任务动画移动(Animator)
- 双目视觉三维重构(一)————简介
- R语言对数线性模型loglm函数_用R语言进行数据分析:常规和广义线性模型
- linux 775和777权限有什么区别
- 三校生高考计算机基础知识,计算机基础知识题(单选题)(三校生历年高考真题归纳)...
- 《走出软件作坊》开始预订
- OFBIZ分享:如何让OFBIZ使用中文界面
- License Check
热门文章
- 动态代理(2)----动态代理和AOP
- C# 自动投票和手机号码归属地查询 - 简单程序源码分享(高手飘过)
- 使用 vs 2008 宏制作自动注释工具
- System center virtual machine manager 2008 R2安装部署
- Enterprise Library 3.1 简化使用范例一
- 数据库系统原理设计题和综合体
- Ubuntu 16.04中vim编辑报错E138: Can‘t write viminfo file /root/.viminfo!
- 【Hive】hive表的文件存储格式
- 解决eclipse中mybatis的xml配置文件无代码提示问题
- 为什么接口在设计时所有的方法一般都要抛异常?