Python中矩阵库Numpy基本操作详解


Posted in Python onNovember 21, 2017

NumPy是一个关于矩阵运算的库,熟悉Matlab的都应该清楚,这个库就是让python能够进行矩阵话的操作,而不用去写循环操作。

下面对numpy中的操作进行总结。

numpy包含两种基本的数据类型:数组和矩阵。

数组(Arrays)

>>> from numpy import *
>>> a1=array([1,1,1]) #定义一个数组
>>> a2=array([2,2,2])
>>> a1+a2    #对于元素相加
array([3, 3, 3])
>>> a1*2     #乘一个数
array([2, 2, 2])

##
>>> a1=array([1,2,3])
>>> a1
array([1, 2, 3])
>>> a1**3    #表示对数组中的每个数做平方
array([ 1, 8, 27])
##取值,注意的是它是以0为开始坐标,不matlab不同
>>> a1[1]
2

##定义多维数组
>>> a3=array([[1,2,3],[4,5,6]])
>>> a3
array([[1, 2, 3],
  [4, 5, 6]])
>>> a3[0]    #取出第一行的数据
array([1, 2, 3])
>>> a3[0,0]   #第一行第一个数据
1
>>> a3[0][0]   #也可用这种方式
1
##数组点乘,相当于matlab点乘操作
>>> a1=array([1,2,3])
>>> a2=array([4,5,6])
>>> a1*a2
array([ 4, 10, 18])

Numpy有许多的创建数组的函数:

import numpy as np

a = np.zeros((2,2)) # Create an array of all zeros
print a    # Prints "[[ 0. 0.]
      #   [ 0. 0.]]"

b = np.ones((1,2)) # Create an array of all ones
print b    # Prints "[[ 1. 1.]]"

c = np.full((2,2), 7) # Create a constant array
print c    # Prints "[[ 7. 7.]
      #   [ 7. 7.]]"

d = np.eye(2)  # Create a 2x2 identity matrix
print d    # Prints "[[ 1. 0.]
      #   [ 0. 1.]]"

e = np.random.random((2,2)) # Create an array filled with random values
print e      # Might print "[[ 0.91940167 0.08143941]
       #    [ 0.68744134 0.87236687]]"

数组索引(Array indexing)

矩阵

矩阵的操作与Matlab语言有很多的相关性。

#创建矩阵
>>> m=mat([1,2,3])
>>> m
matrix([[1, 2, 3]])

#取值
>>> m[0]    #取一行
matrix([[1, 2, 3]])
>>> m[0,1]    #第一行,第2个数据
2
>>> m[0][1]    #注意不能像数组那样取值了
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
 File "/usr/lib64/python2.7/site-packages/numpy/matrixlib/defmatrix.py", line 305, in __getitem__
 out = N.ndarray.__getitem__(self, index)
IndexError: index 1 is out of bounds for axis 0 with size 1

#将Python的列表转换成NumPy的矩阵
>>> list=[1,2,3]
>>> mat(list)
matrix([[1, 2, 3]])

#矩阵相乘
>>> m1=mat([1,2,3])  #1行3列
>>> m2=mat([4,5,6]) 
>>> m1*m2.T    #注意左列与右行相等 m2.T为转置操作
matrix([[32]])  
>>> multiply(m1,m2)  #执行点乘操作,要使用函数,特别注意
matrix([[ 4, 10, 18]]) 

#排序
>>> m=mat([[2,5,1],[4,6,2]]) #创建2行3列矩阵
>>> m
matrix([[2, 5, 1],
  [4, 6, 2]])
>>> m.sort()     #对每一行进行排序
>>> m
matrix([[1, 2, 5],
  [2, 4, 6]])

>>> m.shape      #获得矩阵的行列数
(2, 3)
>>> m.shape[0]     #获得矩阵的行数
2
>>> m.shape[1]     #获得矩阵的列数
3

#索引取值
>>> m[1,:]      #取得第一行的所有元素
matrix([[2, 4, 6]])
>>> m[1,0:1]     #第一行第0个元素,注意左闭右开
matrix([[2]])
>>> m[1,0:3]
matrix([[2, 4, 6]])
>>> m[1,0:2]
matrix([[2, 4]])

扩展矩阵函数tile()

例如,要计算[0,0,0]到一个多维矩阵中每个点的距离,则要将[0,0,0]进行扩展。

tile(inX, (i,j)) ;i是扩展个数,j是扩展长度
实例如下:

>>>x=mat([0,0,0])
>>> x
matrix([[0, 0, 0]])
>>> tile(x,(3,1))   #即将x扩展3个,j=1,表示其列数不变
matrix([[0, 0, 0],
  [0, 0, 0],
  [0, 0, 0]])
>>> tile(x,(2,2))   #x扩展2次,j=2,横向扩展
matrix([[0, 0, 0, 0, 0, 0],
  [0, 0, 0, 0, 0, 0]])

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python检测远程服务器tcp端口的方法
Mar 14 Python
用Python的Django框架编写从Google Adsense中获得报表的应用
Apr 17 Python
Python中pygame安装方法图文详解
Nov 11 Python
Python加密方法小结【md5,base64,sha1】
Jul 13 Python
对python修改xml文件的节点值方法详解
Dec 24 Python
python面向对象实现名片管理系统文件版
Apr 26 Python
python实现大文本文件分割
Jul 22 Python
在Pytorch中计算卷积方法的区别详解(conv2d的区别)
Jan 03 Python
Python使用20行代码实现微信聊天机器人
Jun 05 Python
keras用auc做metrics以及早停实例
Jul 02 Python
使用python脚本自动生成K8S-YAML的方法示例
Jul 12 Python
Python识别花卉种类鉴定网络热门植物并自动整理分类
Apr 08 Python
python GUI实例学习
Nov 21 #Python
Python实现判断一个字符串是否包含子串的方法总结
Nov 21 #Python
django中的setting最佳配置小结
Nov 21 #Python
如何在sae中设置django,让sae的工作环境跟本地python环境一致
Nov 21 #Python
详解supervisor使用教程
Nov 21 #Python
django模型层(model)进行建表、查询与删除的基础教程
Nov 21 #Python
LRUCache的实现原理及利用python实现的方法
Nov 21 #Python
You might like
基于mysql的论坛(2)
2006/10/09 PHP
在PHP3中实现SESSION的功能(三)
2006/10/09 PHP
dedecms中使用php语句指南
2014/11/13 PHP
非常实用的php验证码类
2016/05/15 PHP
PHP5.4起内置web服务器使用方法
2016/08/09 PHP
JS JSON对象转为字符串的简单实现方法
2013/11/18 Javascript
在Node.js应用中读写Redis数据库的简单方法
2015/06/30 Javascript
javascript+HTML5 Canvas绘制转盘抽奖
2020/05/16 Javascript
解决jquery无法找到其他父级子集问题的方法
2016/05/10 Javascript
浅谈JavaScript 执行环境、作用域及垃圾回收
2016/05/31 Javascript
javascript中使用未定义变量或值的情况分析
2016/07/19 Javascript
js实现九宫格拼图小游戏
2017/02/13 Javascript
JS实现禁止高频率连续点击的方法【基于ES6语法】
2017/04/25 Javascript
Vue.js移动端左滑删除组件的实现代码
2017/09/08 Javascript
基于Vue实现拖拽功能
2020/07/29 Javascript
python实现简易数码时钟
2021/02/19 Python
python实现名片管理系统
2018/11/29 Python
python循环定时中断执行某一段程序的实例
2019/06/29 Python
详解Python list和numpy array的存储和读取方法
2019/11/06 Python
Pytorch 实现sobel算子的卷积操作详解
2020/01/10 Python
jupyter lab的目录调整及设置默认浏览器为chrome的方法
2020/04/10 Python
Python 利用Entrez库筛选下载PubMed文献摘要的示例
2020/11/24 Python
网页布局中CSS样式无效的十个重要原因详解
2017/08/10 HTML / CSS
Kathmandu美国网站:新西兰户外运动品牌
2019/03/23 全球购物
写出二分查找算法的两种实现
2013/05/13 面试题
个人自荐书
2013/12/20 职场文书
2014年两会学习心得范例
2014/03/17 职场文书
《第一朵杏花》教学反思
2014/04/16 职场文书
简洁的英文求职信范文
2014/05/03 职场文书
2014年“四风”问题个人整改措施
2014/09/17 职场文书
重阳节标语大全
2014/10/07 职场文书
2014年房地产个人工作总结
2014/12/20 职场文书
异地恋情人节寄语
2015/02/28 职场文书
个人年终总结开头
2015/03/06 职场文书
2015年社区反邪教工作总结
2015/10/14 职场文书
新西兰:最新留学学习计划书写作指南
2019/07/15 职场文书