百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分类 > 正文

Python 和 MatLAB 矩阵/向量操作和语法对照一览表

ztj100 2024-11-21 00:30 21 浏览 0 评论

本文中python 操作矩阵和向量用 Numpy 工具包,因此首先要导入 numpy;Matlab正常启动即可,矩阵和向量操作是其内置的核心工具。

import numpy as np

创建向量


MATLAB

PYTHON

行向量:

size(1,n)

A = [1 2 3]

A = np.array([1,2,3]).reshape(1,3)

列向量:

size(n,1)

A = [1;2;3]

A = np.array([1,2,3]).reshape(3,1)

1维数组:

size(n,)

不能像size(n,) 这样做

A = np.array([1,2,3)

从j到n,步长为k的整数赋值

A = j:k:n

A = np.arange(j,n+1,k)

k个点的线性插值向量

A = linspace(1,5,k)

A = np.linspace(1,5,k)

创建矩阵


MATLAB

PYTHON

一般矩阵

A = [1 2;3 4]

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

2*2 的 0 矩阵

A = zeros(2,2)

A = np.zeros((2,2))

2*2 的 1 矩阵

A = ones(2,2)

A = np.ones((2,2))

2*2 的单位矩阵

A = eyes(2,3)

A = np.eys(2)

对角矩阵

A = diag([1 2 3])

A = np.diag([1,2,3])

均匀随机数矩阵

A = rand(2,2)

A = np.random.rand(2,2)

正态随机数矩阵

A = randn(2,2)

A = np.random.randn(2,2)

创建稀疏矩阵

A = sparse(2,2)

A(1,2) = 4

A(2,2) = 1

from scipy.sparse import coo_matrix


A = coo_matrix(([4,1],([0,1],[1,1])),

shape=(2,2))

创建三角矩阵

A = [1 2 3 NaN;

4 5 6 7;

NaN 8 9 0]


spdiags(A',[-1 0 1], 4, 4)

import sp.sparse as sp

diagonals = [[4, 5, 6, 7], [1, 2, 3], [8, 9, 10]]


sp.diags(diagonals, [0, -1, 2]).toarray()




向量与矩阵的操作


MATLAB

PYTHON

矩阵装置

A.'

A.T

复共轭矩阵装置

A‘

A.conj()

两个矩阵横向拼接,即行连接

A = [[1 2] [1 2]]

或者

A = horzcat([1 2], [1 2])

B = np.array([1, 2])

A = np.hstack((B, B))

两个矩阵纵向拼接,即列连接

A = [[1 2]; [1 2]]

或者

A = vertcat([1 2], [1 2])

B = np.array([1, 2])

A = np.vstack((B, B))

矩阵行列重构

10个元素组成的一维矩阵转换为5行2列,


A = reshape(1:10, 5, 2)

A = A.reshape(5, 2)

矩阵转换为向量

A(:)

A = A.flatten()

矩阵左右翻转

fliplr(A)

np.fliplr(A)

矩阵上下翻转

flipud(A)

np.flipdu(A)

重复矩阵(行重复3次,列重复4次)

repmat(A, 3, 4)

np.tile(A, (4, 3))

给向量或矩阵预先分配内存

x = rand(10)

y = zeros(size(x, 1), size(x, 2))

(可以是N/A这样的数据类型)

x = np.random.rand(3, 3)

y = np.empty_like(x)

# new dims

y = np.empty((2, 3))

作用于数据集/矩阵/向量的函数

f = @(x) x.^2

g = @(x, y) x + 2 + y.^2

x = 1:10

y = 2:11

f(x)

g(x, y)

def f(x):

return x**2

def g(x, y):

return x + 2 + y**2

x = np.arange(1, 10, 1)

y = np.arange(2, 11, 1)

f(x)

g(x, y)




访问向量或矩阵的元素


MATLAB

PYTHON

访问某个元素

A(2,2)

A[1,1]

访问指定的行

A(1:4,:)

A[0:4,:]

访问指定的列

A(:,1:4)

A[:,0:4]

删除行

A([1 2 4],:)

A[[0,1,3],:]

矩阵的对角线

diag(A)

np.diag(A)

获得矩阵的维数

[nrow ncol] = size(A)

nrow, ncol = np.shape(A)




矩阵的数学运算


MATLAB

PYTHON

求点积

dot(A,B)

np.dot(A,B) 或者 A @ B

矩阵的乘法

A * B

A @ B

占位矩阵的乘法,

(即其中一个矩阵是空的)

x = np.array([1, 2]).reshape(2, 1)

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

y = np.empty_like(x)

np.matmul(A, x, y)

元素的智能乘法

(elementwise multiplication)

A.*B

A * B


矩阵的幂运算

A^2

np.linalg.matrix_power(A, 2)

矩阵元素的幂运算

A.^2

A ** 2

求逆矩阵

inv(A)

或者

A^(-1)

np.linalg.inv(A)

矩阵的决定值

det(A)

np.linalg.det(A)

矩阵的特征值和特征向量

[vec, val] = eig(A)

val, vec = np.linalg.eig(A)

欧几里德范数

norm(A)

np.linalg.norm(A)

线性方程求解

(Ax = b,其中A为n*n矩阵)

A\b

(Ax = b,其中A为n*n矩阵)


np.linalg.solve(A, b)

最小二乘法求解

(Ax = b,其中A为m*n矩阵)

A\b

(Ax = b,其中A为m*n矩阵)


np.linalg.lstsq(A, b)




求和、最大值和最小值


MATLAB

PYTHON

求每一列的sum/max/min

sum(A, 1)

max(A, [], 1)

min(A, [], 1)

sum(A, 0)

np.amax(A, 0)

np.amin(A, 0)

求每一行的sum/max/min

sum(A, 2)

max(A, [], 2)

min(A, [], 2)

sum(A, 1)

np.amax(A, 1)

np.amin(A, 1)

整个矩阵的sum/max/min

sum(A(:))

max(A(:))

min(A(:))

np.sum(A)

np.amax(A)

np.amin(A)

每一行的sum/max/min的累计值

cumsum(A, 1)

cummax(A, 1)

cummin(A, 1)

np.cumsum(A, 0)

np.maximum.accumulate(A, 0)

np.minimum.accumulate(A, 0)

每一列的sum/max/min的累计值

cumsum(A, 2)

cummax(A, 2)

cummin(A, 2)

np.cumsum(A, 1)

np.maximum.accumulate(A, 1)

np.minimum.accumulate(A, 1)




编程语法


MATLAB

PYTHON

注释行

% This is a comment

# This is a comment

注释块

%{

Comment block

%}

# Block

# comment

# following PEP8

For 循环

for i = 1:N

% 做什么

end

for i in range(n):

# 做什么

while 循环

while i <= N

% 做什么

end

while i <= N:

# 做什么

if

if i <= N

% 做什么

end

if i <= N:

#做什么

if / else

if i <= N

% 做A件事

else

% 做其他事

end

if i <= N:

% 做A件事

else

% 做其他事

end

打印文本和变量

x = 10

fprintf('x = %d \n', x)

x = 10

print(f'x = {x}')

匿名函数

f = @(x) x^2

f = lambda x: x**2

函数

function out = f(x)

out = x^2

end

def f(x):

return x**2

元组

t = {1 2.0 "test"}

t{1}

t = (1, 2.0, "test")

t[0]

命名元组/匿名结构

m.x = 1

m.y = 2

m.x

from collections import namedtuple

mdef = namedtuple('m', 'x y')

m = mdef(1, 2)

m.x

函数调用

a = 2.0

f = @(x) a + x

f(1.0)

a = 2.0

def f(x):

return a + x

f(1.0)

函数占位修改

def f(x):

x **=2

return

x = np.random.rand(10)

f(x)

(本文完)

相关推荐

sharding-jdbc实现`分库分表`与`读写分离`

一、前言本文将基于以下环境整合...

三分钟了解mysql中主键、外键、非空、唯一、默认约束是什么

在数据库中,数据表是数据库中最重要、最基本的操作对象,是数据存储的基本单位。数据表被定义为列的集合,数据在表中是按照行和列的格式来存储的。每一行代表一条唯一的记录,每一列代表记录中的一个域。...

MySQL8行级锁_mysql如何加行级锁

MySQL8行级锁版本:8.0.34基本概念...

mysql使用小技巧_mysql使用入门

1、MySQL中有许多很实用的函数,好好利用它们可以省去很多时间:group_concat()将取到的值用逗号连接,可以这么用:selectgroup_concat(distinctid)fr...

MySQL/MariaDB中如何支持全部的Unicode?

永远不要在MySQL中使用utf8,并且始终使用utf8mb4。utf8mb4介绍MySQL/MariaDB中,utf8字符集并不是对Unicode的真正实现,即不是真正的UTF-8编码,因...

聊聊 MySQL Server 可执行注释,你懂了吗?

前言MySQLServer当前支持如下3种注释风格:...

MySQL系列-源码编译安装(v5.7.34)

一、系统环境要求...

MySQL的锁就锁住我啦!与腾讯大佬的技术交谈,是我小看它了

对酒当歌,人生几何!朝朝暮暮,唯有己脱。苦苦寻觅找工作之间,殊不知今日之事乃我心之痛,难道是我不配拥有工作嘛。自面试后他所谓的等待都过去一段时日,可惜在下京东上的小金库都要见低啦。每每想到不由心中一...

MySQL字符问题_mysql中字符串的位置

中文写入乱码问题:我输入的中文编码是urf8的,建的库是urf8的,但是插入mysql总是乱码,一堆"???????????????????????"我用的是ibatis,终于找到原因了,我是这么解决...

深圳尚学堂:mysql基本sql语句大全(三)

数据开发-经典1.按姓氏笔画排序:Select*FromTableNameOrderByCustomerNameCollateChinese_PRC_Stroke_ci_as//从少...

MySQL进行行级锁的?一会next-key锁,一会间隙锁,一会记录锁?

大家好,是不是很多人都对MySQL加行级锁的规则搞的迷迷糊糊,一会是next-key锁,一会是间隙锁,一会又是记录锁。坦白说,确实还挺复杂的,但是好在我找点了点规律,也知道如何如何用命令分析加...

一文讲清怎么利用Python Django实现Excel数据表的导入导出功能

摘要:Python作为一门简单易学且功能强大的编程语言,广受程序员、数据分析师和AI工程师的青睐。本文系统讲解了如何使用Python的Django框架结合openpyxl库实现Excel...

用DataX实现两个MySQL实例间的数据同步

DataXDataX使用Java实现。如果可以实现数据库实例之间准实时的...

MySQL数据库知识_mysql数据库基础知识

MySQL是一种关系型数据库管理系统;那废话不多说,直接上自己以前学习整理文档:查看数据库命令:(1).查看存储过程状态:showprocedurestatus;(2).显示系统变量:show...

如何为MySQL中的JSON字段设置索引

背景MySQL在2015年中发布的5.7.8版本中首次引入了JSON数据类型。自此,它成了一种逃离严格列定义的方式,可以存储各种形状和大小的JSON文档,例如审计日志、配置信息、第三方数据包、用户自定...

取消回复欢迎 发表评论: