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中Collection的使用小技巧
Aug 18 Python
使用Python对Excel进行读写操作
Mar 30 Python
谈谈python中GUI的选择
Mar 01 Python
详谈Python中列表list,元祖tuple和numpy中的array区别
Apr 18 Python
python线程池threadpool实现篇
Apr 27 Python
Python爬虫包BeautifulSoup实例(三)
Jun 17 Python
Python3爬虫学习之爬虫利器Beautiful Soup用法分析
Dec 12 Python
IDLE下Python文件编辑和运行操作
Apr 25 Python
Windows 下更改 jupyterlab 默认启动位置的教程详解
May 18 Python
python实现求纯色彩图像的边框
Apr 08 Python
Python 线程池模块之多线程操作代码
May 20 Python
matplotlib画混淆矩阵与正确率曲线的实例代码
Jun 01 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
ThinkPHP表单令牌错误的相关解决方法分析
2016/05/20 PHP
Javascript 陷阱 window全局对象
2008/11/26 Javascript
JS IE和FF兼容性问题汇总
2009/02/09 Javascript
Prototype Function对象 学习
2009/07/12 Javascript
使用jquery实现div的tab切换实例代码
2013/05/27 Javascript
JavaScript中textRange对象使用方法小结
2015/03/24 Javascript
利用prop-types第三方库对组件的props中的变量进行类型检测
2017/05/02 Javascript
微信小程序删除处理详解
2017/08/16 Javascript
解决vue跨域axios异步通信问题
2019/04/17 Javascript
java实现单链表增删改查的实例代码详解
2019/08/30 Javascript
vue组件系列之TagsInput详解
2020/05/14 Javascript
Python open读写文件实现脚本
2008/09/06 Python
python实现查询IP地址所在地
2015/03/29 Python
pycharm+django创建一个搜索网页实例代码
2018/01/24 Python
python3.4实现邮件发送功能
2018/05/28 Python
Python数据持久化shelve模块用法分析
2018/06/29 Python
Python实现操纵控制windows注册表的方法分析
2019/05/24 Python
python3.6+selenium实现操作Frame中的页面元素
2019/07/16 Python
python实现从wind导入数据
2019/12/03 Python
Python统计时间内的并发数代码实例
2019/12/28 Python
python判断链表是否有环的实例代码
2020/01/31 Python
python中实现词云图的示例
2020/12/19 Python
有趣的睡衣和礼物:LazyOne
2019/11/27 全球购物
俄罗斯建筑和装饰材料在线商店:Stroilandia
2020/07/25 全球购物
Java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?
2012/05/30 面试题
教师工作能力自我评价
2015/03/04 职场文书
2015年医务科工作总结范文
2015/05/26 职场文书
家长对孩子的寒假评语
2015/10/09 职场文书
高中政治教师教学反思
2016/02/23 职场文书
干货干货!2019最新优秀创业计划书
2019/03/21 职场文书
创新创业项目计划书该怎样写?
2019/08/13 职场文书
关于vue中如何监听数组变化
2021/04/28 Vue.js
python 中的@运算符使用
2021/05/26 Python
python字典进行运算原理及实例分享
2021/08/02 Python
5个pandas调用函数的方法让数据处理更加灵活自如
2022/04/24 Python
详细介绍MySQL中limit和offset的用法
2022/05/06 MySQL