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 相关文章推荐
windows下wxPython开发环境安装与配置方法
Jun 28 Python
python3编码问题汇总
Sep 06 Python
python模块之time模块(实例讲解)
Sep 13 Python
解决Django migrate No changes detected 不能创建表的问题
May 27 Python
关于python写入文件自动换行的问题
Jun 23 Python
对Python+opencv将图片生成视频的实例详解
Jan 08 Python
python内存管理机制原理详解
Aug 12 Python
python 爬取古诗文存入mysql数据库的方法
Jan 08 Python
Python安装与卸载流程详细步骤(图解)
Feb 20 Python
PyQt5中向单元格添加控件的方法示例
Mar 24 Python
Python实现的扫码工具居然这么好用!
Jun 07 Python
python在package下继续嵌套一个package
Apr 14 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
js为空或不是对象问题的快速解决方法
2013/12/11 Javascript
JavaScript获取客户端计算机硬件及系统等信息的方法
2014/01/02 Javascript
jQuery事件绑定和委托实例
2014/11/25 Javascript
初识Javascript小结
2015/07/16 Javascript
基于JavaScript实现移动端TAB触屏切换效果
2015/10/20 Javascript
JS实现点击按钮获取页面高度的方法
2015/11/02 Javascript
AngularJS初始化静态模板详解
2016/01/14 Javascript
AngularJS 遇到的小坑与技巧小结
2016/06/07 Javascript
bootstrap table实例详解
2017/01/06 Javascript
jQuery Ajax自定义分页组件(jquery.loehpagerv1.0)实例详解
2017/05/01 jQuery
JSON 数据格式详解
2017/09/13 Javascript
jQuery实现倒计时功能 jQuery实现计时器功能
2017/09/19 jQuery
vue Element-ui input 远程搜索与修改建议显示模版的示例代码
2017/10/19 Javascript
vue中axios解决跨域问题和拦截器的使用方法
2018/03/07 Javascript
VUE 实现滚动监听 导航栏置顶的方法
2018/09/11 Javascript
vue init webpack 建vue项目报错的解决方法
2018/09/29 Javascript
Vue中的验证登录状态的实现方法
2019/03/09 Javascript
JS实现页面跳转与刷新的方法汇总
2019/08/30 Javascript
[43:48]Ti4正赛第一天 VG vs NEWBEE 2
2014/07/19 DOTA
python写入中英文字符串到文件的方法
2015/05/06 Python
Python中字典的基础知识归纳小结
2015/08/19 Python
python3.x 将byte转成字符串的方法
2018/07/17 Python
python3去掉string中的标点符号方法
2019/01/22 Python
python并发编程 Process对象的其他属性方法join方法详解
2019/08/20 Python
python 字典有序并写入json文件过程解析
2019/09/30 Python
Python 抓取数据存储到Redis中的操作
2020/07/16 Python
python使用re模块爬取豆瓣Top250电影
2020/10/20 Python
对pytorch中x = x.view(x.size(0), -1) 的理解说明
2021/03/03 Python
美国棒球装备和用品商店:Baseball Savings
2018/06/09 全球购物
精选奢华:THE LIST
2019/09/05 全球购物
卫校毕业生自我鉴定
2013/10/31 职场文书
搞笑征婚广告词
2014/03/17 职场文书
市场开发与营销专业求职信范文
2014/05/01 职场文书
解除租赁合同协议书
2016/03/21 职场文书
MySQL数据库压缩版本安装与配置详细教程
2021/05/21 MySQL
MySQL 服务和数据库管理
2021/11/11 MySQL