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练习程序批量修改文件名
Jan 16 Python
Python编写电话薄实现增删改查功能
May 07 Python
Python扩展内置类型详解
Mar 26 Python
用python标准库difflib比较两份文件的异同详解
Nov 16 Python
pip安装py_zipkin时提示的SSL问题对应
Dec 29 Python
用python3 urllib破解有道翻译反爬虫机制详解
Aug 14 Python
Python logging设置和logger解析
Aug 28 Python
python二维图制作的实例代码
Dec 03 Python
python 实现socket服务端并发的四种方式
Dec 14 Python
使用豆瓣源来安装python中的第三方库方法
Jan 26 Python
如何用python插入独创性声明
Mar 31 Python
pytorch实现ResNet结构的实例代码
May 17 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/19 PHP
php读取纯真ip数据库使用示例
2014/01/26 PHP
PHP生成唯一订单号的方法汇总
2015/04/16 PHP
PHP的swoole扩展安装方法详细教程
2016/05/18 PHP
PHP操作mysql数据库分表的方法
2016/06/09 PHP
JavaScript类和继承 this属性使用说明
2010/09/03 Javascript
jquery操作对象数组元素方法详解
2014/11/26 Javascript
轻松搞定jQuery.noConflict()
2016/02/15 Javascript
Bootstrap安装环境配置教程分享
2016/05/27 Javascript
jq stop()和:is(:animated)的用法及区别(详解)
2017/02/12 Javascript
js数字舍入误差以及解决方法(必看篇)
2017/02/28 Javascript
jquery实现表单获取短信验证码代码
2017/03/13 Javascript
JS 判断某变量是否为某数组中的一个值的3种方法(总结)
2017/07/10 Javascript
在小程序中使用canvas的方法示例
2018/09/17 Javascript
javascript中innerHTML 获取或替换html内容的实现代码
2020/03/17 Javascript
JavaScript代码压缩工具UglifyJS和Google Closure Compiler的基本用法
2020/04/13 Javascript
Angular8 简单表单验证的实现示例
2020/06/03 Javascript
[01:13]DOTA2群星解读国服召集令 一起说出回归的理由
2013/07/17 DOTA
python 3.5实现检测路由器流量并写入txt的方法实例
2017/12/17 Python
树莓派动作捕捉抓拍存储图像脚本
2019/06/22 Python
python实现H2O中的随机森林算法介绍及其项目实战
2019/08/29 Python
Django框架序列化与反序列化操作详解
2019/11/01 Python
解决Tensorboard可视化错误:不显示数据 No scalar data was found
2020/02/15 Python
Python HTTP下载文件并显示下载进度条功能的实现
2020/04/02 Python
关于PySnooper 永远不要使用print进行调试的问题
2021/03/04 Python
CSS3感应鼠标的背景闪烁和图片缩放动画效果
2014/05/14 HTML / CSS
Sofmap官网:日本著名的数码电器专卖店
2017/05/19 全球购物
天游软件面试
2013/11/23 面试题
广告学专业应届生求职信
2013/10/01 职场文书
大学毕业自我鉴定范文
2014/02/03 职场文书
大学生简短的自我评价分享
2014/02/20 职场文书
机关节能减排实施方案
2014/03/17 职场文书
英文演讲稿
2014/05/15 职场文书
离婚协议书范文
2015/01/26 职场文书
社区服务理念口号
2015/12/25 职场文书
GoLang中生成UUID唯一标识的实现
2021/05/08 Golang