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中常见的异常总结
Feb 20 Python
Python将图片转换为字符画的方法
Jun 16 Python
python smtplib模块自动收发邮件功能(一)
May 22 Python
python中sys.argv函数精简概括
Jul 08 Python
python实现图像检索的三种(直方图/OpenCV/哈希法)
Aug 08 Python
对Django中的权限和分组管理实例讲解
Aug 16 Python
python 求10个数的平均数实例
Dec 16 Python
Flask框架搭建虚拟环境的步骤分析
Dec 21 Python
Python中remove漏删和索引越界问题的解决
Mar 18 Python
python如何实时获取tcpdump输出
Sep 16 Python
python实现定时发送邮件
Dec 23 Python
python 破解加密zip文件的密码
Apr 22 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
Laravel搭建后台登录系统步骤详解
2016/07/26 PHP
Thinkphp连表查询及数据导出方法示例
2016/10/15 PHP
PHP精确到毫秒秒杀倒计时实例详解
2019/03/14 PHP
TP5框架简单登录功能实现方法示例
2019/10/31 PHP
PHP 文件写入和读取操作实例详解【必看篇】
2019/11/04 PHP
动态为事件添加js代码示例
2009/02/15 Javascript
JavaScript 对象成员的可见性说明
2009/10/16 Javascript
Js获取事件对象代码
2010/08/05 Javascript
javascript轻松实现当鼠标移开时已弹出子菜单自动消失
2013/12/29 Javascript
js 去掉空格实例 Trim() LTrim() RTrim()
2014/01/07 Javascript
基于jQuery+Cookie实现的防止刷新的在线考试倒计时
2015/06/19 Javascript
AngularJs篇:使用AngularJs打造一个简易权限系统的实现代码
2016/12/26 Javascript
Chrome浏览器的alert弹窗禁止再次弹出后恢复的方法
2016/12/30 Javascript
jquery滚动条插件slimScroll使用方法
2017/02/09 Javascript
详解windows下vue-cli及webpack 构建网站(三)使用组件
2017/06/17 Javascript
Async Validator 异步验证使用说明
2017/07/03 Javascript
详解如何实现一个简单的 vuex
2018/02/10 Javascript
浅谈Angular HttpClient简单入门
2018/05/04 Javascript
React全家桶环境搭建过程详解
2018/05/18 Javascript
vue2.0父子组件间传递数据的方法
2018/08/16 Javascript
webpack css加载和图片加载的方法示例
2018/09/11 Javascript
vue实现pdf导出解决生成canvas模糊等问题(推荐)
2018/10/18 Javascript
js字符串处理之绝妙的代码
2019/04/05 Javascript
茶余饭后聊聊Vue3.0响应式数据那些事儿
2019/10/30 Javascript
详解ES6数组方法find()、findIndex()的总结
2020/05/12 Javascript
解析Python中的变量、引用、拷贝和作用域的问题
2015/04/07 Python
对python中Librosa的mfcc步骤详解
2019/01/09 Python
Django RBAC权限管理设计过程详解
2019/08/06 Python
Python算法的时间复杂度和空间复杂度(实例解析)
2019/11/19 Python
python爬虫数据保存到mongoDB的实例方法
2020/07/28 Python
Python爬虫实战案例之爬取喜马拉雅音频数据详解
2020/12/07 Python
美国葡萄酒网上商店:Martha Stewart Wine Co.
2019/03/17 全球购物
bonprix匈牙利:女士、男士和儿童服装
2019/07/19 全球购物
计算机专业毕业生推荐信
2013/11/25 职场文书
读书活动总结范文
2014/04/26 职场文书
酒店周年庆活动方案
2014/08/21 职场文书