python矩阵教程_numpy教程:矩阵matrix及其运算

numpy矩阵简介

NumPy函数库中存在两种不同的数据类型(矩阵matrix和数组array),都可以用于处理行列表示的数字元素。虽然它们看起来很相似,但是在这两个数据类型上执行相同的数学运算可能得到不同的结果,其中NumPy函数库中的matrix与MATLAB中matrices等价。

numpy模块中的矩阵对象为numpy.matrix,包括矩阵数据的处理,矩阵的计算,以及基本的统计功能,转置,可逆性等等,包括对复数的处理,均在matrix对象中。

关于numpy中矩阵和二维数组的取舍

matrix是array的分支,matrix和array在很多时候都是通用的,但官方建议如果两个可以通用,那就选择array,因为array更灵活,速度更快,很多人把二维的array也翻译成矩阵。

matrix的优势就是相对简单的运算符号,如矩阵相乘用符号*,但是array相乘得用方法.dot()。

Note: array * mat也是矩阵相乘,而不是点乘。

array的优势就是不仅仅表示二维,还能表示3、4、5...维,而且在大部分Python程序里,array也是更常用的。

Note:

1. numpy中二维数组不支持求逆运算(给gui),但可以使用scripy中的linalg.inv()函数求逆。

2. lz建议使用二维ndarray代替matrix,结合使用scripy.linalg库可以实现全部矩阵运算。[Scipy教程 - 线性代数库linalg]

Matrix objects矩阵对象

创建示例

np.matrix

>>> a = np.matrix(’1 2; 3 4’)

>>> print a

[[1 2]

[3 4]]

>>> np.matrix([[1, 2], [3, 4]])

matrix([[1, 2],

[3, 4]])

Note:

1. class numpy.matrix(data,dtype,copy):返回一个矩阵,其中data为ndarray对象或者字符形式;dtype:为data的type;copy:为bool类型。

2. 矩阵的换行必须是用分号(;)隔开,内部数据必须为字符串形式(‘ ’),矩阵的元素之间必须以空格隔开。

3. 矩阵中的data可以为数组对象。

np.asmatrix

>>> x = np.array([[1, 2], [3, 4]])

>>> m = np.asmatrix(x)

>>> x[0,0] = 5

>>> m

matrix([[5, 2],

[3, 4]])

矩阵对象属性Attribute

矩阵对象方法Methods

[numpy-ref-1.8.1 - 1.6.2 Matrix objects p120]

Matrix矩阵对象方法使用示例

>>> a = np.asmatrix('0 2 7; 3 4 8; 5 0 9')

>>> a.all()

False

>>> a.all(axis=0)

matrix([[False, False,  True]], dtype=bool)

>>> a.all(axis=1)

matrix([[False],

[ True],

[False]], dtype=bool)

ü  Astype方法

>>> a.astype(float)

matrix([[ 12.,   3.,   5.],

[ 32.,  23.,   9.],

[ 10., -14.,  78.]])

ü  Argsort方法

>>> a=np.matrix('12 3 5; 32 23 9; 10 -14 78')

>>> a.argsort()

matrix([[1, 2, 0],

[2, 1, 0],

[1, 0, 2]])

ü  Clip方法

>>> a

matrix([[ 12,   3,   5],

[ 32,  23,   9],

[ 10, -14,  78]])

>>> a.clip(12,32)

matrix([[12, 12, 12],

[32, 23, 12],

[12, 12, 32]])

ü  Cumprod方法

>>> a.cumprod(axis=1)

matrix([[    12,     36,    180],

[    32,    736,   6624],

[    10,   -140, -10920]])

ü  Cumsum方法

>>> a.cumsum(axis=1)

matrix([[12, 15, 20],

[32, 55, 64],

[10, -4, 74]])

ü  Tolist方法

>>> b.tolist()

[[12, 3, 5], [32, 23, 9], [10, -14, 78]]

ü  Tofile方法

>>> b.tofile('d:\\b.txt')

ü  compress()方法

>>> from numpy import *

>>> a = array([10, 20, 30, 40])

>>> condition = (a > 15) & (a < 35)

>>> condition

array([False, True, True, False], dtype=bool)

>>> a.compress(condition)

array([20, 30])

>>> a[condition]                                      # same effect

array([20, 30])

>>> compress(a >= 30, a)                              # this form a

so exists

array([30, 40])

>>> b = array([[10,20,30],[40,50,60]])

>>> b.compress(b.ravel() >= 22)

array([30, 40, 50, 60])

>>> x = array([3,1,2])

>>> y = array([50, 101])

>>> b.compress(x >= 2, axis=1)                       # illustrates

the use of the axis keyword

array([[10, 30],

[40, 60]])

>>> b.compress(y >= 100, axis=0)

array([[40, 50, 60]])

The Matrix class numpy矩阵类

建立矩阵

Note: numpy.mat(data, dtype=None)   Interpret the input as a matrix.

Unlike matrix, asmatrix does not make a copy if the input is already a matrix or an ndarray. Equivalent to matrix(data, copy=False).

[numpy-ref-1.8.1 - 3.1.7 The Matrix class p484]

Matrix library矩阵库(numpy.matlib)

This module contains all functions in the numpy namespace, with the following replacement functions that return matrices instead of ndarrays.

Functions that are also in the numpy namespace and return matrices

Replacement functions in matlib

[numpy-ref-1.8.1 - 3.21 Matrix library p940]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/310204.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从Copyright到Copyleft,聊聊版权与开源协议

4月26日是世界知识产权日&#xff0c;很多人或许会觉得这和软件开发没什么关系&#xff0c;但事实上&#xff0c;开源软件大多受到知识产权法中著作权法&#xff08;Copyright&#xff0c;也称版权&#xff09;的保护。开源软件虽说开放了源代码&#xff0c;但是用户在使用、修…

[Java网络编程基础]TCP发送和接收数据

代码如下: package ClientPack;import java.io.IOException; import java.io.OutputStream; import java.net.InetAddress; import java.net.Socket; import java.net.UnknownHostException;public class ClientDemo {public static void main(String[] args) throws IOExcept…

手机端适应_不轻易透露的超强技巧!详解iVX中怎样做设备自适应

"自适应网页设计"的概念2010年&#xff0c;Ethan Marcotte提出了"自适应网页设计"&#xff08;Responsive Web Design&#xff09;这个名词&#xff0c;指可以自动识别屏幕宽度、并做出相应调整的网页设计&#xff0c;自适应是为了解决如何才能在不同大小的…

五分钟了解dotnetcore配置框架

一、前言配置的本质就是字符串的键值对&#xff0c;微软的一系列接口其实就是对这些键值对字符串的抽象。二、基本类型2.1、Nuget包Microsoft.Extensions.Configuration.AbstractionsMicrosoft.Extensions.Configuration2.2、抽象接口IConfiguration提供了查询、设置配置项、监…

彩光和灰光模块_5G承载网主要光模块图谱

&#xff08;一&#xff09;5G承载光模块总览在光通信中&#xff0c;业务信息的传送与接收都是靠光模块来实现的。在发送端&#xff0c;光模块完成电/光转换&#xff0c;光在光纤中传输&#xff0c;然后在接收端实现光/电转换。可以说&#xff0c;没有光模块就没有光通信。在我…

C++实现五子棋小游戏

代码如下: #include <iostream> using namespace std;class GoBangDesk { public:GoBangDesk() :state(), flagWin(false), flagOver(false), flagDraw(false){for (int i 0; i < 20; i)for (int j 0; j < 20; j)goBangDesk[i][j] #;}void printDesk(){cout &l…

Mobius 一个运行在 .NET Core 上的 .NET 运行时

导语一个 .NET 应用仅仅只是一块在 .NET 运行时上面运行的二进制代码。而 .NET 运行时只是一个能执行这项任务的程序。当前的 .NET Framework 和 .NET Core 运行时采用 C 编写&#xff0c;而 Mobius 是一个使用 C# 重写的 .NET 运行时&#xff0c;重写包括 JIT 编译和 GC 等&am…

jsbridge实现及原理_JSBridge 实现原理解析

JSBridge 项目以 js 与 android 通信为例&#xff0c;讲解 JSBridge 实现原理&#xff0c;下面提到的方法在 iOS(UIWebview 或 WKWebview)均有对应方法。1. native to js两种 native 调用 js 方法&#xff0c;注意被调用的方法需要在 JS 全局上下文上loadUrlevaluateJavascript…

Autofac的切面编程实现

面向切面编程&#xff1a;Autofac.Annotation扩展组件是我开源的一款利用打标签完成autofac容器的注入组件。https://github.com/yuzd/Autofac.Annotation我们之前介绍了利用Aspect标签来完成拦截器功能Aspect是一对一的方式&#xff0c;我想要某个class开启拦截器功能我需要针…

[Java基础]体验Lambda表达式

普通写法: 代码如下: package LambdaPack01;public class MyRunnable implements Runnable{Overridepublic void run() {System.out.println("多线程启动了");} }package LambdaPack01;public class LambdaDemo01 {public static void main(String[] args) {MyRunna…

linux启动mqtt_linux下安装MQTT服务器 - EMQTT

1. 下载从官网下载https://www.emqx.io/downloads#broker&#xff0c; 本文所用版本为broker/v3.2.1/emqx-centos7-v3.2.1.ziplinux下 下载:wget https://www.emqx.io/downloads/broker/v3.2.1/emqx-centos7-v3.2.1.zip解压&#xff1b;unzip emqx-centos7-v3.2.1.zip所在目录&…

.net core 基于Dapper 的分库分表开源框架(core-data)

一、前言感觉很久没写文章了&#xff0c;最近也比较忙&#xff0c;写的相对比较少&#xff0c;抽空分享基于Dapper 的分库分表开源框架core-data的强大功能&#xff0c;更好的提高开发过程中的效率&#xff1b;在数据库的数据日积月累的积累下&#xff0c;业务数据库中的单表数…

[Java基础]Lambda表达式练习

代码如下: package LambdaPracticePack;public interface Eatable {void eat(); }package LambdaPracticePack;public class EatableImpl implements Eatable{Overridepublic void eat() {System.out.println("一天一苹果&#xff0c;医生远离我");} }package Lambd…

ltv价值 应用_用户终生价值Ltv是什么,在游戏设计中如何考虑?

简单来说.你的游戏产品&#xff0c;用户的LTV表现&#xff0c;可以判断你这个产品的生命周期。看用户LTV的表现&#xff0c;30天LTV是否&#xff1e;每用户成本&#xff1f;大于越多&#xff0c;产品的付费做的越健康。如果小于等于&#xff0c;那就意味着赔本&#xff0c;产品…

​你可能不知道的7个HTML小技巧

五一期间&#xff0c;知道大家都比较懒&#xff0c;我也是。所以写篇简单且基础的技术小文&#xff0c;不需要动脑子&#xff0c;扫一眼就能掌握的那种。DETAILS 标签<details> 标签将额外的详情信息隐藏起来&#xff0c;用户在需要的时候点击即可展开查看详情。<deta…

mysql基本架构_MySQL的基本架构

MySQL的基本架构发布时间&#xff1a;2019-02-16 23:35,浏览次数&#xff1a;178, 标签&#xff1a;MySQLMySql的基本架构示意图如下&#xff1a;一、MySQL总体上可分为Server层和存储引擎层。Server层包括连接器、查询器、分析器、优化器、执行器等&#xff0c;涵盖 MySQL的大…

青年节寄语和新课程免费上架

大家好&#xff0c;确实好久没有写东西了&#xff0c;希望这篇推送不是用来提醒你取消关注哈。2020年这突如其来的疫情&#xff0c;打乱了我们的生活&#xff0c;也让很多人更加明白了生活的无常以及可贵吧&#xff0c;在此也真诚希望大家都要好好哒&#xff0c;不负韶华&#…

MySQL错误1264和1366_Mysql错误1366 - Incorrect integer value解决方法

由于这个数据库服务器存放的数据库比较多且都是小数据库&#xff0c;所以最初的时候是运行在windows服务器上的。前一段时间由于机房服务器要做调整&#xff0c;于是我便在一个夜深人静的夜晚对数据库进行的迁移及前台应用程序进行了调整&#xff0c;调整结束后测试应用均可以正…