numpy数组及其运算

创建数组

import numpy as np
np.array([1,2,3,4,5]) #把列表转换为数组
np.array((1,2,3,4,5)) #把元组转化成数组
np.array(range(5))#把range对象转换成数组
np.array([[1,2,3],[4,5,6]])#二维数组
np.arange(8) #类似于range函数
np.arange(1,10,2)  #等差数组,1到10,相邻两个数字之间相差2
np.linspace(0,10,11) #0到10的等差数组,包含11个数字
np.linspace(0,10,11,endpoint=False)#不包含终点
np.logspace(0,100,10) #相当于10**np.linspace(0,10,10)
np.logspace(1,6,5,base=2) #相当于2**np.linspace(1,6,5)
np.zeros(3)#全0一维数组
np.ones(3)# 全1一维数组
np.zeros((3,3))# 全0二维数组,3行3列
np.identity(3)#生成3行3列的单位矩阵
np.random.randint(0,50,5) #随机数组,5个0到50之间的数字

测试两个数组元素是否接近

isclose返回包含若干True/False值的数组,而allclose返回True或False值

import numpy as np
x=np.array([1,2,3,4.001,5])
y=np.array([1,1.999,3,4.01,5.1])
print(np.allclose(x,y))
print(np.allclose(x,y,rtol=0.2)) #设置相对误差
print(np.allclose(x,y,atol=0.2)) #设置绝对误差
print(np.isclose(x,y))
print(np.isclose(x,y,atol=0.2))

修改数组中元素的值

import numpy as np
x=np.arange(8)
np.append(x,8) #在尾部追加一个元素
np.append(x,[9,10]) #在尾部追加多个元素
x[3]=8 #使用下标形式修改数组
np.insert(x,1,7) #在位置1插入7,之后的元素以此向后移
y=np.array([[1,2,3],[4,5,6],[7,8,9]])
y[0,2]=4 #修改第0行第2列的元素值
y[1:,1:]=1 #切片,把行下标大于等于1,列下标也大于等于1的值都设置为1
m=np.array([[3,6,7],[8,9,6],[1,3,4]])
m[1:,1:]=[1,2] #同时修改多个元素值
print(m)
'''
[[3 6 7][8 1 2][1 1 2]]'''
m[1:,1:]=[[1,2],[3,4]]
print(m)
'''
[[3 6 7][8 1 2][1 3 4]]
'''

数组运算

import numpy as np
x=np.array([1,2,3,4,5,6])
print(x*2) #每个元素都乘以2,加减乘除及其幂运算等均为每个元素都要进行运算
np.array([1,2,3,4])+np.array([4,3,2,1])#等长数组相机,对应元素相加
np.array([2,3,4,5])+np.array([4])#每个元素加4
#等长数组之间的运算都是针对每一个元素进行运算
a=np.array([1,2,3])
a**a #相当于1的一次方,2的2次方,3的3次方
a=np.array([1,2,3])
b=np.array([[1,2,3],[4,5,6],[7,8,9]])
#不同维度的数组相乘,广播
c=a*b #a中每个元素乘以b中对应列的元素
print(c)
'''
[[ 1  4  9][ 4 10 18][ 7 16 27]]'''
d=a+b
print(d)#a中每个元素加b中对应列元素
'''
[[ 2  4  6][ 5  7  9][ 8 10 12]]
'''

数组排序

import numpy as np
x=np.array([3,1,2])
np.argsort(x)#返回排序后的元素下标[1,2,0],下标1的数最小,下标2次之,下标0最大
x.argmax()
x.argmin()#最大值,最小值下标
y=np.array([6,4,7,3,5])
y.sort()#原地排序
print(y)
# [3 4 5 6 7]

数组内积运算

两个等长数组对应元素乘积之和

import numpy as np
x=np.array([1,2,3])
y=np.array([4,5,6])
print(np.dot(x,y))
print(x.dot(y))
print(sum(x*y))

访问数组中的元素

import numpy as np
x=np.array([[1,2,3],[4,5,6],[7,8,9]])
x[0] #第0行所有元素
x[0,2]#第0行2列,等价于x[0][2]
x[[0,2]]#第0行和第2行的所有元素
x[[0,2,1],[2,1,0]]#第一个[]内全部指行数,第二个指列数,即第0行第2列,第2行1列,第1行0列
y=np.arange(10)
print(y[::-1])#反向切片[9 8 7 6 5 4 3 2 1 0]
print(y[::2])#隔一个取一个元素[0 2 4 6 8]
print(y[:5])#前5个元素[0 1 2 3 4]
a=np.arange(25)
a.shape=5,5 #修改数组形状
a[0,2:5] #第0行下标[2,5)的元素
a[2:5,2:5]#行标和列标都在[2,5)之间的元素
a[:,[2,4]]#第2列和第4列所有元素
a[[1,3]][:,[2,4]]# 第1,3行的第2,4列元素

矩阵生成与常用操作

矩阵只能是二维的

生成矩阵

import numpy as np
x=np.matrix([[1,2,3],[4,5,6]])
y=np.matrix([1,2,3,4,5])
print(x,y,x[1,1],sep='\n\n')#x[1,1]与x[1][1]含义不同

矩阵转置

import numpy as np
x=np.matrix([[1,2,3],[4,5,6]])
y=np.matrix([1,2,3,4,5])
print(x.T,y.T,sep='\n\n') #x.T,y.T表示转置

查看矩阵特征

import numpy as np
x=np.matrix([[1,2,3],[4,5,6]])
print(x.mean())#所有元素平均值
print(x.mean(axis=0))#纵向平均值
print(x.mean(axis=1))#横向平均值
print(x.sum())#所有元素之后
print(x.max(axis=1))#横向最大值
print(x.argmax(axis=1))#横向最大值下标
print(x.diagonal())#对角线元素
print(x.nonzero())#非0元素下标,分别返回行下标和列下标

计算方差,协方差,标准差

import numpy as np
print(np.cov([1,1,1,1,1,1]))#方差
print(np.std([1,1,1,1,1]))#标准差
x=[-2.1,-1,4.3]
y=[3,1.1,0.12]
X=np.vstack((x,y))#竖直堆叠矩阵
print(np.cov(X))#协方差
print(np.cov(x,y))#协方差
print(np.std(X))#标准差
print(np.std(X,axis=1))#标准差,横着计算

计算特征值与特征向量

import numpy as np
A=np.array([[1,-3,3],[3,-5,3],[6,-6,4]])
e,v=np.linalg.eig(A)
print(e,v,sep='\n')#e,v分别代表特征值和特征向量
print(np.dot(A,v))#矩阵与特征向量乘积
print(e*v)#特征值与特征向量乘积
print(np.isclose(np.dot(A,v),e*v))#验证二者是否相等

计算逆矩阵

import numpy as np
x=np.matrix([[1,2,3],[4,5,6],[7,8,0]])
y=np.linalg.inv(x)#计算可逆矩阵的逆矩阵
print(y)
print(x*y)#乘积为单位矩阵
print(y*x)

求解线性方程组

import numpy as np
a=np.array([[3,1],[1,2]])#系数矩阵
b=np.array([9,8])#等号右侧列向量
x=np.linalg.solve(a,b)#求解
print(x)
print(np.dot(a,x))#验证

numpy数组与矩阵运算相关推荐

  1. 用数组循环实现矩阵乘法php,array用法 numpy_从创建数组到矩阵运算,一文带你看懂Numpy...

    导读:Numpy(Numerical Python的简称)是高性能科学计算和数据分析的基础包,其提供了矩阵运算的功能.本文带你了解Numpy的一些核心知识点. 作者:魏溪含 涂铭 张修鹏 如需转载请联 ...

  2. python笔记3(numpy数组)

    记录python听课笔记 文章目录 记录python听课笔记 一,数组创建 1.创建NumPy数组 1.1一维数组和二维数组的创建和访问 1.2三维数组 1.3数组元素的数据类型 1.4arange( ...

  3. Python 数据分析三剑客之 NumPy(一):理解 NumPy / 数组基础

    CSDN 课程推荐:<Python 数据分析与挖掘>,讲师刘顺祥,浙江工商大学统计学硕士,数据分析师,曾担任唯品会大数据部担任数据分析师一职,负责支付环节的数据分析业务.曾与联想.亨氏.网 ...

  4. python数组初始化_Python科学计算库Numpy数组的初始化和基本操作

    umPy系统是Python的一种开源的数值计算扩展.这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以用来表示矩阵 ...

  5. Numpy中使用astype函数转换numpy数组数据类型

    Numpy中使用astype函数转换numpy数组数据类型 目录 Numpy中使用astype函数转换numpy数组数据类型 numpy是什么?numpy和list有哪些区别? Numpy中使用ast ...

  6. 【Python】NumPy数组和矢量计算

    目录 一.NumPy的ndarray:一种多维数组对象: 1.NumPy安装: 2.检测安装是否成功: 二.数组创建: 1.array创建: range的使用: arange创建数组: 2.随机数创建 ...

  7. python数组与矩阵运算

    python数组与矩阵运算 本文内容 numpy数组和矩阵的建立 numpy数组和矩阵的运算 numpy array维度 reference 本文内容 初学python试图通过矩阵简化运算,感谢网友智 ...

  8. NumPy — 创建全零、全1、空、arange 数组,array 对象类型,astype 转换数据类型,数组和标量以及数组之间的运算,NumPy 数组共享内存

    NumPy 简介 一个用 python 实现的科学计算包.包括: 1.一个强大的 N 维数组对象 Array : 2.比较成熟的(广播)函数库: 3.用于整合 C/C++ 和 Fortran 代码的工 ...

  9. python slice是共享内存吗_在共享内存中使用numpy数组进行多处理

    在共享内存中使用numpy数组进行多处理 我希望在共享内存中使用numpy数组,以便与多处理模块一起使用.困难之处在于它像一个numpy数组一样使用,而不仅仅是作为一个ctype数组使用.from m ...

最新文章

  1. 让LoadRunner再次走下神坛
  2. linux virt java_Linux下Java环境安装
  3. bada项目在真机上调试
  4. .sln vcxproj vcxproj.filter文件作用(转载)
  5. ASP.NET中对表单输入行有选择验证
  6. 太火!这本 AI 图书微软强推,程序员靠它拿下 50K!
  7. java中判斷主鍵重複
  8. php第三方分享插件下载地址,PhpWind安装分享插件
  9. 微信小程序 - 实现简单登录和个人信息页面
  10. 基于端口号的虚拟主机
  11. Unity-背包系统与Json文本解析
  12. 普通学历,大一大二要不要打ACM?
  13. 【论文简述】CVP-MVSNet:Cost Volume Pyramid Based Depth Inference for Multi-View Stereo(CVPR 2020)
  14. python3爬妹子图_python3爬妹子图
  15. U-Net实现医学图像分割(pytorch)
  16. 正式-日常作息(2020.11)
  17. python恢复_python机器学习入门恢复
  18. 转载 解密蓝牙mesh系列 | 第七篇【低功耗蓝牙】【承载层(bearer layer)】【节点与特性】【代理节点(Proxy Node)】【蓝牙mesh代理服务】【发现代理节点】【代理协议】
  19. excel中的FV函数、PMT函数与PV函数的java实现
  20. Div元素 html

热门文章

  1. 高性能滚动 scroll 及页面渲染优化
  2. Win8 64位安装Oracle 11g时错
  3. Java for LintCode 验证二叉查找树
  4. Android开发14——监听内容提供者ContentProvider的数据变化
  5. LeetCode-260 Single Number III
  6. Python函数进阶
  7. VS2008和VS2010水晶报表版本冲突的问题解决
  8. Spring-全局异常拦截
  9. onchange监听input值变化及input隐藏后change事件不触发的原因与解决方法(设置readonly后onchange不起作用的解决方案)
  10. SQL数据库从高版本到低版本的迁移,同时解决sql脚本文件太大无法打开的尴尬问题