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进程管理工具supervisor使用实例
Sep 17 Python
Python微信库:itchat的用法详解
Aug 14 Python
Python实现多属性排序的方法
Dec 05 Python
对python判断ip是否可达的实例详解
Jan 31 Python
Python实现的微信支付方式总结【三种方式】
Apr 13 Python
Python hmac模块使用实例解析
Dec 24 Python
python实现将列表中各个值快速赋值给多个变量
Apr 02 Python
Python实现爬取并分析电商评论
Jun 19 Python
关于Python3爬虫利器Appium的安装步骤
Jul 29 Python
python使用列表的最佳方案
Aug 12 Python
利用python制作拼图小游戏的全过程
Dec 04 Python
python实现简单的学生管理系统
Feb 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
php正则
2006/07/07 PHP
福利彩票幸运号码自动生成器
2006/10/09 PHP
php中模拟POST传递数据的两种方法分享
2011/09/16 PHP
PHP统计二维数组元素个数的方法
2013/11/12 PHP
PHP检测字符串是否为UTF8编码的常用方法
2014/11/21 PHP
thinkPHP实现签到功能的方法
2017/03/15 PHP
php从数据库中获取数据用ajax传送到前台的方法
2018/08/20 PHP
PHP实现与java 通信的插件使用教程
2019/08/11 PHP
phpfpm的作用和用法
2019/10/10 PHP
ExtJS下书写动态生成的xml(兼容火狐)
2013/04/02 Javascript
js二级地域选择的实现方法
2013/06/17 Javascript
js处理json以及字符串的比较等常用操作
2013/09/08 Javascript
获取非最后一列td值并将title设为该值的方法
2013/10/30 Javascript
Javascript Objects详解
2014/09/04 Javascript
js实现人民币大写金额形式转换
2016/04/27 Javascript
原生js实现类似fullpage的单页/全屏滚动
2017/01/22 Javascript
Node.js搭建小程序后台服务
2018/01/03 Javascript
浅谈Vue路由快照实现思路及其问题
2018/06/07 Javascript
浅谈从React渲染流程分析Diff算法
2018/09/08 Javascript
微信小程序http连接访问解决方案的示例
2018/11/05 Javascript
Node.js API详解之 vm模块用法实例分析
2020/05/27 Javascript
如何使用 vue-cli 创建模板项目
2020/11/19 Vue.js
JavaScript实现弹出窗口效果
2020/12/09 Javascript
Python将图片批量从png格式转换至WebP格式
2020/08/22 Python
Python实现读取机器硬件信息的方法示例
2018/06/09 Python
Python 3.x 判断 dict 是否包含某键值的实例讲解
2018/07/06 Python
Python参数类型以及常见的坑详解
2019/07/08 Python
python正则表达式实例代码
2020/03/03 Python
Python字符串格式化常用手段及注意事项
2020/06/17 Python
python爬虫看看虎牙女主播中谁最“顶”步骤详解
2020/12/01 Python
物业保安员岗位职责
2014/03/14 职场文书
我读书我快乐演讲稿
2014/05/07 职场文书
微笑面对生活演讲稿
2014/09/23 职场文书
2015幼儿园庆元旦活动方案
2014/12/09 职场文书
2016年小学党支部创先争优活动总结
2016/04/05 职场文书
详解Flutter自定义应用程序内键盘的实现方法
2022/06/14 Java/Android