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中logging模块的用法实例
Sep 29 Python
深入理解python对json的操作总结
Jan 05 Python
python爬取m3u8连接的视频
Feb 28 Python
Python3实现的Mysql数据库操作封装类
Jun 06 Python
浅谈DataFrame和SparkSql取值误区
Jun 09 Python
Python中__slots__属性介绍与基本使用方法
Sep 05 Python
Python 使用folium绘制leaflet地图的实现方法
Jul 05 Python
Django 实现图片上传和显示过程详解
Jul 18 Python
Python调用graphviz绘制结构化图形网络示例
Nov 22 Python
使用python 对验证码图片进行降噪处理
Dec 18 Python
python 通过邮件控制实现远程控制电脑操作
Mar 16 Python
Python学习之os包使用教程详解
Mar 21 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
PHP中include()与require()的区别说明
2017/02/14 PHP
PHP使用mysqli同时执行多条sql查询语句的实例
2019/03/22 PHP
php中的依赖注入实例详解
2019/08/14 PHP
JS复制到剪贴板示例代码
2013/10/30 Javascript
FireBug 调试JS入门教程 如何调试JS
2013/12/23 Javascript
js 异步操作回调函数如何控制执行顺序
2013/12/24 Javascript
JS实现很酷的水波文字特效实例
2015/02/26 Javascript
常用的JavaScript WEB操作方法分享
2015/02/28 Javascript
javascript类型系统——undefined和null全面了解
2016/07/13 Javascript
javascript获取网页各种高宽及位置的方法总结
2016/07/27 Javascript
ES6新特性之数组、Math和扩展操作符用法示例
2017/04/01 Javascript
nodejs服务搭建教程 nodejs访问本地站点文件
2017/04/07 NodeJs
JavaScript编程设计模式之观察者模式(Observer Pattern)实例详解
2017/10/25 Javascript
Jquery和CSS实现选择框重置按钮功能
2018/11/08 jQuery
微信小程序实现注册登录功能(表单校验、错误提示)
2019/12/10 Javascript
Vue循环中多个input绑定指定v-model实例
2020/08/31 Javascript
python实现数通设备端口监控示例
2014/04/02 Python
Python中基础的socket编程实战攻略
2016/06/01 Python
pyenv命令管理多个Python版本
2017/03/26 Python
python中使用iterrows()对dataframe进行遍历的实例
2018/06/09 Python
Python识别html主要文本框过程解析
2020/02/18 Python
完美解决pyinstaller打包报错找不到依赖pypiwin32或pywin32-ctypes的错误
2020/04/01 Python
python实现测试工具(一)——命令行发送get请求
2020/10/19 Python
英国最大的女士服装零售商:Bonmarché
2017/08/17 全球购物
迷你唐卡软皮鞋:Minnetonka Moccasin
2018/05/01 全球购物
Notino希腊:购买香水和美容产品
2019/07/25 全球购物
Groupon法国官方网站:特卖和网上购物高达-70%
2019/09/02 全球购物
乌克兰最大的家用电器和电子产品连锁店:Eldorado
2019/10/02 全球购物
.NET是怎么支持多种语言的
2015/02/24 面试题
自动化专业毕业生自荐信
2013/11/01 职场文书
2014年医学生毕业自我鉴定
2014/03/26 职场文书
铁路安全事故反思
2014/04/26 职场文书
校长四风对照检查材料
2014/09/27 职场文书
2014年教育实习工作总结
2014/11/22 职场文书
公司给客户的感谢信
2015/01/23 职场文书
详解Django中 render() 函数的使用方法
2021/04/22 Python