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的使用方法相关推荐

  1. numpy中amin()方法中维度axis=0 1 2 的理解

    https://www.jianshu.com/p/6f58d7f39147 numpy中amin()方法中维度axis=0 1 2 的理解 axis=0  从最外一层的维度来比较 (对半比较  虽然 ...

  2. python怎么读取txt文件数据保存数组中-python将txt等文件中的数据读为numpy数组的方法...

    实际中,很多数据都是存为txt文件.csv文件等,但是在程序中处理的时候numpy数组或列表是最方便的.本文简单介绍读入txt文件以及将之转化为numpy数组或列表的方法. 1 将txt文件读为lis ...

  3. numpy中reshape方法详解

    numpy中reshape方法详解_zhanggonglalala的博客-CSDN博客_reshape

  4. python读txt文件 数组-python将txt等文件中的数据读为numpy数组的方法

    实际中,很多数据都是存为txt文件.csv文件等,但是在程序中处理的时候numpy数组或列表是最方便的.本文简单介绍读入txt文件以及将之转化为numpy数组或列表的方法. 1 将txt文件读为lis ...

  5. Python numpy.median函数方法的使用

    NumPy(Numerical Python的缩写)是一个开源的Python科学计算库.使用NumPy,就可以很自然地使用数组和矩阵.NumPy包含很多实用的数学函数,涵盖线性代数运算.傅里叶变换和随 ...

  6. 使用numpy数组索引方法获取指定行列位置的数值内容

    使用numpy数组索引方法获取指定行列位置的数值内容 在numpy中,我们可以使用方括号索引[]语法方法获取一个或多个数组中的指定元素.本文将介绍如何使用此方法来获取二维numpy数组中指定行列位置的 ...

  7. matlab下调用python,numpy库函数的方法

    matlab下调用python,numpy库函数的方法 Matlab 调用 Python 下的脚本 这篇博文的目的是为了解决博主在用matlab的eig函数时遇到的一个问题: 博主在用matlab下的 ...

  8. Python numpy.mat函数方法的使用

    NumPy(Numerical Python的缩写)是一个开源的Python科学计算库.使用NumPy,就可以很自然地使用数组和矩阵.NumPy包含很多实用的数学函数,涵盖线性代数运算.傅里叶变换和随 ...

  9. Python numpy.corrcoef函数方法的使用

    NumPy(Numerical Python的缩写)是一个开源的Python科学计算库.使用NumPy,就可以很自然地使用数组和矩阵.NumPy包含很多实用的数学函数,涵盖线性代数运算.傅里叶变换和随 ...

  10. Python numpy.atleast_1d函数方法的使用

    NumPy(Numerical Python的缩写)是一个开源的Python科学计算库.使用NumPy,就可以很自然地使用数组和矩阵.NumPy包含很多实用的数学函数,涵盖线性代数运算.傅里叶变换和随 ...

最新文章

  1. 推荐爱奇艺开源的高性能网络安全监控引擎!
  2. 7、斐波那契数列、跳台阶、变态跳台阶、矩形覆盖------------剑指offer系列
  3. mysql数据类型查询命令_Linux命令:MySQL系列之三--mysql数据类型及SQL结构化查询语句使用...
  4. vue 动态修改路由参数
  5. Javascript高级程序设计第二版第七章匿名函数--笔记
  6. Nginx 的配置文件介绍
  7. UDT中的epoll
  8. 微信或者QQ如何制作请用右上角打开浏览器
  9. hdu4939思维DP
  10. FineCMS-v5.0.1漏洞审计
  11. [RK356x] [Firefly-Ubuntu] 1min教你在Ubuntu系统安装GCC开发工具
  12. 浩辰CAD建筑软件教程之门窗套
  13. Lua实现简单的任务动画移动(Animator)
  14. 双目视觉三维重构(一)————简介
  15. R语言对数线性模型loglm函数_用R语言进行数据分析:常规和广义线性模型
  16. linux 775和777权限有什么区别
  17. 三校生高考计算机基础知识,计算机基础知识题(单选题)(三校生历年高考真题归纳)...
  18. 《走出软件作坊》开始预订
  19. OFBIZ分享:如何让OFBIZ使用中文界面
  20. License Check

热门文章

  1. 动态代理(2)----动态代理和AOP
  2. C# 自动投票和手机号码归属地查询 - 简单程序源码分享(高手飘过)
  3. 使用 vs 2008 宏制作自动注释工具
  4. System center virtual machine manager 2008 R2安装部署
  5. Enterprise Library 3.1 简化使用范例一
  6. 数据库系统原理设计题和综合体
  7. Ubuntu 16.04中vim编辑报错E138: Can‘t write viminfo file /root/.viminfo!
  8. 【Hive】hive表的文件存储格式
  9. 解决eclipse中mybatis的xml配置文件无代码提示问题
  10. 为什么接口在设计时所有的方法一般都要抛异常?