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之集成开发环境(IDE)
Sep 12 Python
python实现web方式logview的方法
Aug 10 Python
Python模拟三级菜单效果
Sep 11 Python
Python爬虫实现爬取京东手机页面的图片(实例代码)
Nov 30 Python
78行Python代码实现现微信撤回消息功能
Jul 26 Python
在Python中使用Neo4j的方法
Mar 14 Python
Pandas之groupby( )用法笔记小结
Jul 23 Python
Python 存取npy格式数据实例
Jul 01 Python
python opencv实现简易画图板
Aug 27 Python
python 获取字典键值对的实现
Nov 12 Python
python游戏开发Pygame框架
Apr 22 Python
代码复现python目标检测yolo3详解预测
May 06 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数据库链接类(PDO+Access)实例分享
2013/12/05 PHP
php5.2以下版本无json_decode函数的解决方法
2014/05/25 PHP
php mysqli查询语句返回值类型实例分析
2016/06/29 PHP
php array_keys 返回数组的键名
2016/10/25 PHP
php提取微信账单的有效信息
2018/10/01 PHP
详解PHP神奇又有用的Trait
2019/03/25 PHP
jquery ajax 登录验证实现代码
2009/09/23 Javascript
JQuery Study Notes 学习笔记(一)
2010/08/04 Javascript
jQuery 表单验证扩展(三)
2010/10/20 Javascript
jQuery源码分析-03构造jQuery对象-工具函数
2011/11/14 Javascript
css transform 3D幻灯片特效实现步骤解读
2013/03/27 Javascript
Jquery实现点击按钮,连续地向textarea中添加值的实例代码
2014/03/08 Javascript
js变形金刚文字特效代码分享
2015/08/20 Javascript
基于replaceChild制作简单的吞噬特效
2015/09/21 Javascript
jQuery遮罩层实现方法实例详解(附遮罩层插件)
2015/12/08 Javascript
angular-ngSanitize模块-$sanitize服务详解
2017/06/13 Javascript
JS中Swiper的使用和轮播图效果
2017/08/11 Javascript
vue2.0模拟锚点的实例
2018/03/14 Javascript
JavaScript设计模式之缓存代理模式原理与简单用法示例
2018/08/07 Javascript
bootstrap自定义样式之bootstrap实现侧边导航栏功能
2018/09/10 Javascript
Vue实现简易翻页效果源码分享
2018/11/08 Javascript
基于mpvue搭建微信小程序项目框架的教程详解
2019/04/10 Javascript
弱类型语言javascript开发中的一些坑实例小结【变量、函数、数组、对象、作用域等】
2019/08/07 Javascript
Vue项目移动端滚动穿透问题的实现
2020/05/19 Javascript
vue点击标签切换选中及互相排斥操作
2020/07/17 Javascript
Python的CGIHTTPServer交互实现详解
2018/02/08 Python
Python多进程方式抓取基金网站内容的方法分析
2019/06/03 Python
Django中reverse反转并且传递参数的方法
2019/08/06 Python
Python re正则表达式元字符分组()用法分享
2020/02/10 Python
Python编程快速上手——疯狂填词程序实现方法分析
2020/02/29 Python
Cotton On南非:澳洲时尚平价品牌
2018/06/28 全球购物
JDK安装目录下有哪些内容
2014/08/25 面试题
市场营销专业应届生自荐信
2014/06/19 职场文书
初中生300字旷课检讨书
2014/11/19 职场文书
Python趣味挑战之给幼儿园弟弟生成1000道算术题
2021/05/28 Python
一次SQL如何查重及去重的实战记录
2022/03/13 MySQL