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中的map()函数和reduce()函数的用法
Apr 27 Python
Mac中Python 3环境下安装scrapy的方法教程
Oct 26 Python
解决python3中解压zip文件是文件名乱码的问题
Mar 22 Python
Python处理菜单消息操作示例【基于win32ui模块】
May 09 Python
基于tensorflow加载部分层的方法
Jul 26 Python
pyspark操作MongoDB的方法步骤
Jan 04 Python
python excel转换csv代码实例
Aug 26 Python
python如何将两张图片生成为全景图片
Mar 05 Python
解决Jupyter notebook中.py与.ipynb文件的import问题
Apr 21 Python
Python基于Serializer实现字段验证及序列化
Nov 04 Python
Django集成富文本编辑器summernote的实现步骤
May 31 Python
Python基于百度AI实现抓取表情包
Jun 27 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开发中的安全防范知识详解
2013/06/06 PHP
深入理解PHP中的Session和Cookie
2013/06/21 PHP
PHP CURL获取cookies模拟登录的方法
2013/11/04 PHP
PHP获取当前url的具体方法全面解析
2013/11/26 PHP
php管理nginx虚拟主机shell脚本实例
2014/11/19 PHP
php上传文件并显示上传进度的方法
2015/03/24 PHP
php常量详细解析
2015/10/27 PHP
PHP使用MPDF类生成PDF的方法
2015/12/08 PHP
PHP实现对二维数组某个键排序的方法
2016/09/14 PHP
Json_decode 解析json字符串为NULL的解决方法(必看)
2017/02/17 PHP
Laravel框架使用Seeder实现自动填充数据功能
2018/06/13 PHP
js中cookie的使用详细分析
2008/05/28 Javascript
基于JQuery.timer插件实现一个计时器
2010/04/25 Javascript
div+css+js实现无缝滚动类似marquee无缝滚动兼容firefox
2013/08/29 Javascript
类似php的js数组的in_array函数自定义方法
2013/12/27 Javascript
JavaScript的jQuery库插件的简要开发指南
2015/08/12 Javascript
使用Bootstrap Tabs选项卡Ajax加载数据实现
2016/12/23 Javascript
使用preload预加载页面资源时注意事项
2020/02/03 Javascript
使用React代码动态生成栅格布局的方法
2020/05/24 Javascript
ES6 Generator基本使用方法示例
2020/06/06 Javascript
Python实现备份文件实例
2014/09/16 Python
python导入csv文件出现SyntaxError问题分析
2017/12/15 Python
Python实现的查询mysql数据库并通过邮件发送信息功能
2018/05/17 Python
python 实现调用子文件下的模块方法
2018/12/07 Python
python time.sleep()是睡眠线程还是进程
2019/07/09 Python
使用Python将Exception异常错误堆栈信息写入日志文件
2020/04/08 Python
Python实现初始化不同的变量类型为空值
2020/06/02 Python
Python如何实现大型数组运算(使用NumPy)
2020/07/24 Python
Pottery Barn阿联酋:购买家具、家居装饰及更多
2019/12/08 全球购物
巴西最大的玩具连锁店:Ri Happy
2020/06/17 全球购物
即将毕业大学生自荐信
2014/01/24 职场文书
校运会入场式解说词
2014/02/10 职场文书
高一新生军训方案
2014/05/12 职场文书
公司酒会主持词
2015/07/02 职场文书
Pytorch 实现变量类型转换
2021/05/17 Python
Mysql分析设计表主键为何不用uuid
2022/03/31 MySQL