python之numpy对矩阵的操作
2017-11-15 23:35
477 查看
python的numpy包有很多对矩阵的操作,下面是一些事例:
#!/usr/bin/python # -*- coding: UTF-8 -*- # @Time : 17/11/15 下午9:27 # @Author : lijie # @File : mytest06.py import numpy a1=numpy.array([1,2,3,4]) a2=numpy.array((1,2,3,4)) a3=numpy.array([[1,2,3,4],[5,6,7,8]]) #第2行第3列 print "*"*50 print a3[1,2] print "*"*50 #第2列所有 :表示所有的 print "*"*50 print a3[:,1] print "*"*50 #第1行所有 print "*"*50 print a3[0,:] print "*"*50 #从第0个开始取值赋予999 并且以后每次右移2位继续取值赋值为999 print "*"*50 atmp1=numpy.array([1,2,3,4]) atmp1[0:3:2]=999 print "atmp1[0:3:2]",atmp1 print "*"*50 #前面表示行往下到第二行间隔为1赋值为888,后面表示列到第四列间隔为2的列赋值为888,前面的0可以省略 print "*"*50 atmp2=numpy.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]]) atmp2[0:2:1,0:4:2]=888 print "atmp2[0:2:1,0:4:2]",atmp2 print "*"*50 #反转一维矩阵 print "*"*50 print "a2[::-1]",a2[::-1] print "*"*50 #反转多维矩阵第一个-1表示列反转,第二个表示行反转 可以只反转一个 print "*"*50 print "a3[::-1,::-1]",a3[::-1,::-1] print "*"*50 #当改变tmp1中的数据 原矩阵也会改变 print "*"*50 tmp1=a3[:,1] tmp1[0]=999 print "a3",a3 print "*"*50 #产生一行矩阵 print "*"*50 a4=numpy.arange(21) print "a4",a4 print "*"*50 #产生多行矩阵 4行5列 其中reshape是会返回新的矩阵,resize是直接改变原始矩阵 print "*"*50 a5=numpy.arange(20).reshape(4,5) print "a5",a5 print "*"*50 #在1到20中产生30个数矩阵 print "*"*50 a6=numpy.linspace(1,20,30) print "a6",a6 print "*"*50 #随机2*3 矩阵 (0,1】 print "*"*50 a7=numpy.random.random((2,3)) print "a7",a7 print "*"*50 #0矩阵 构造4*5 0矩阵 print "*"*50 a8=numpy.zeros((4,5)) print "a8",a8 print "*"*50 #0矩阵 构造4*5 1矩阵 print "*"*50 a9=numpy.ones((4,5)) print "a9",a9 print "*"*50 #e矩阵 构造5*5 E矩阵(单位矩阵) print "*"*50 a10=numpy.eye(5) print "a10",a10 print "*"*50 ############矩阵计算 print "*"*50 a11=numpy.array([20,30,40,50]) a12=numpy.array([10,20,30,40]) print "a11+a12",a11+a12 print "a11-a12",a11-a12 print "a11*a12",a11*a12 print "a11/a12",a11/a12 print "*"*50 #对矩阵内的所有值平方 print "*"*50 a13=numpy.arange(4).reshape(2,2) print "a13**2",a13**2 print "*"*50 #对矩阵内的所有值乘2 print "*"*50 print "a13*2",a13*2 print "*"*50 #对矩阵内的值求sin print "*"*50 print "numpy.sin(a13)",numpy.sin(a13) print "*"*50 #判断返回boolean矩阵 print "*"*50 print "a13<2",a13<2 print "*"*50 #数组内部计算 print "*"*50 a14=numpy.array(((1,3),(4,5))) print "*"*50 #相当于所有相加 print "*"*50 print "numpy.sum(a14)",numpy.sum(a14) print "*"*50 #竖向相加 print "*"*50 print "numpy.sum(a14,axis=0)",numpy.sum(a14,axis=0) print "*"*50 #横向相加 print "*"*50 print "numpy.sum(a14,axis=1)",numpy.sum(a14,axis=1) print "*"*50 #计算每一列的和 print "*"*50 print "a14.sum(axis=0)",a14.sum(axis=0) print "*"*50 #计算每一行的和 print "*"*50 print "a14.sum(axis=1)",a14.sum(axis=1) print "*"*50 #计算每一列的最小值 print "*"*50 print "a14.min(axis=0)",a14.min(axis=0) print "*"*50 #计算每一列的最小值 print "*"*50 print "a14.min(axis=1)",a14.min(axis=1) print "*"*50 #计算每一列的最大值 print "*"*50 print "a14.max(axis=0)",a14.max(axis=0) print "*"*50 #计算每一列的最大值 print "*"*50 print "a14.max(axis=1)",a14.max(axis=1) print "*"*50 #列叠加 print "*"*50 print "a14.cumsum(axis=0)",a14.cumsum(axis=0) print "*"*50 #行叠加 print "*"*50 print "a14.cumsum(axis=1)",a14.cumsum(axis=1) print "*"*50 #矩阵所有最大值 print "*"*50 print "a14.max()",a14.max() print "*"*50 #矩阵所有最小值 print "*"*50 print "a14.min()",a14.min() print "*"*50 ##矩阵的遍历 print "*"*50 atmp3=numpy.array([[1,2,3,4],[5,6,7,8],[5,6,7,8]]) for i in atmp3.flat: print i print "*"*50 #矩阵的合并 #纵向合并 a15=numpy.ones((2,2)) a16=numpy.eye(2) print "*"*50 print "numpy.vstack((a15,a16))",numpy.vstack((a15,a16)) print "*"*50 #横向合并 print "*"*50 print "numpy.hstack((a15,a16))",numpy.hstack((a15,a16)) print "*"*50 #矩阵浅拷贝 print "*"*50 a17=numpy.eye(2) a18=a17 a18[0,1]=999 print "浅拷贝",a17 print "*"*50 #矩阵深拷贝 print "*"*50 a19=numpy.eye(2) a20=a19.copy() a20[0,1]=999 print "深拷贝",a19 print "*"*50 #矩阵转置 行专列 print "*"*50 a21=numpy.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]]) print "转置a21",a21.transpose() print "*"*50 #查看矩阵的行 列数量 print "*"*50 a22=numpy.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]]) print "行列数为:",a22.shape print "行数为:",a22.shape[0] print "列数为:",a22.shape[1] print "*"*50 #矩阵tile print "*"*50 a23=numpy.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]]) #内部横向扩展 print "numpy.tile(a23,1)\n",numpy.tile(a23,(2)) #内部横向纵向扩展 print "numpy.tile(a23,(2,2))\n",numpy.tile(a23,(2,2)) print "*"*50 #矩阵排序获取下标 或者最大最小值(注意是下标) print "*"*50 a23=numpy.array([1,2,3,4,10,9,8,7]) print "a23.argsort()",a23.argsort() print "a23.argmax()",a23.argmax() print "a23.argmin()",a23.argmin() print "*"*50
相关文章推荐
- Python numpy(ndarray 随机数组 常用操作 线性方程组和矩阵运算)
- python numpy 使用笔记 矩阵操作
- python基础练习(三)—— numpy的矩阵基本操作
- python numpy 矩阵操作
- Python机器学习:numpy之矩阵操作命令
- Python中矩阵库Numpy基本操作详解
- python的Numpy之矩阵操作
- Python中矩阵库Numpy基本操作
- 【Python】记录四:numpy矩阵操作(持续更新)
- Python-Numpy(3)矩阵基本操作
- Python使用numpy产生正态分布随机数的向量或矩阵操作示例
- 学习Python数据分析(2.1)----Numpy数组以及数组的操作
- Python Numpy 数组的初始化和基本操作
- numpy线性代数基础 - Python和MATLAB矩阵处理的不同
- Python numpy 转置、逆、去掉一列、按列取出、矩阵拼接、矩阵排序、矩阵相等、np.where,一维转二维
- Python第三方矩阵库numpy矩阵基本运算
- 关于用mapreduce做kmeans聚类以及python的numpy和list做矩阵、向量乘法的速度对比
- Python Numpy 数组的初始化和基本操作
- 【python】【numpy】【给多维矩阵添加一列】
- Python机器学习:numpy的应用之基本操作命令