python numpy库_Matlab与Python-Numpy库中矩阵运算的等价比较

ndims(a)

ndim(a)ora.ndim

get the

number of dimensions of an array

numel(a)

size(a)ora.size

get the

number of elements of an array

size(a)

shape(a)ora.shape

get

the “size”

of the matrix

size(a,n)

a.shape[n-1]

get the

number of elements of the n-th dimension of

arraya.

(Note that MATLAB® uses 1 based indexing while Python uses 0 based

indexing, See note

[ 1 2 3; 4 5 6 ]

array([[1.,2.,3.], [4.,5.,6.]])

2x3

matrix literal

[ a b; c d ]

vstack([hstack([a,b]), hstack([c,d])])orbmat('a

b; c d').A

construct

a matrix from blocksa,b,c,

andd

a(end)

a[-1]

access

last element in the 1xn matrixa

a(2,5)

a[1,4]

access

element in second row, fifth column

a(2,:)

a[1]ora[1,:]

entire

second row ofa

a(1:5,:)

a[0:5]ora[:5]ora[0:5,:]

the first

five rows ofa

a(end-4:end,:)

a[-5:]

the last

five rows ofa

a(1:3,5:9)

a[0:3][:,4:9]

rows one

to three and columns five to nine

ofa.

This gives read-only access.

a([2,4,5],[1,3])

a[ix_([1,3,4],[0,2])]

rows 2,4

and 5 and columns 1 and 3. This allows the matrix to be modified,

and doesn’t

require a regular slice.

a(3:2:21,:)

a[ 2:21:2,:]

every

other row ofa,

starting with the third and going to the twenty-first

a(1:2:end,:)

a[ ::2,:]

every

other row ofa,

starting with the first

a(end:-1:1,:)orflipud(a)

a[ ::-1,:]

awith

rows in reverse order

a([1:end 1],:)

a[r_[:len(a),0]]

awith

copy of the first row appended to the end

a.'

a.transpose()ora.T

transpose

ofa

a'

a.conj().transpose()ora.conj().T

conjugate

transpose ofa

a * b

a.dot(b)

matrix

multiply

a .* b

a * b

element-wise

multiply

a./b

a/b

element-wise

divide

a.^3

a**3

element-wise

exponentiation

(a>0.5)

(a>0.5)

matrix

whose i,jth element is (a_ij > 0.5). The Matlab result is an

array of 0s and 1s. The NumPy result is an array of the boolean

valuesFalseandTrue.

find(a>0.5)

nonzero(a>0.5)

find the

indices where (a>

0.5)

a(:,find(v>0.5))

a[:,nonzero(v>0.5)[0]]

extract

the columms ofawhere

vector v > 0.5

a(:,find(v>0.5))

a[:,v.T>0.5]

extract

the columms ofawhere

column vector v > 0.5

a(a<0.5)=0

a[a<0.5]=0

awith

elements less than 0.5 zeroed out

a .* (a>0.5)

a * (a>0.5)

awith

elements less than 0.5 zeroed out

a(:) = 3

a[:] = 3

set all

values to the same scalar value

y=x

y = x.copy()

numpy

assigns by reference

y=x(2,:)

y = x[1,:].copy()

numpy

slices are by reference

y=x(:)

y = x.flatten()

turn

array into vector (note that this forces a copy)

1:10

arange(1.,11.)orr_[1.:11.]orr_[1:10:10j]

create an

increasing vector (see noteRANGES)

0:9

arange(10.)orr_[:10.]orr_[:9:10j]

create an

increasing vector (see noteRANGES)

[1:10]'

arange(1.,11.)[:, newaxis]

create a

column vector

zeros(3,4)

zeros((3,4))

3x4

two-dimensional array full of 64-bit floating point

zeros

zeros(3,4,5)

zeros((3,4,5))

3x4x5

three-dimensional array full of 64-bit floating point

zeros

ones(3,4)

ones((3,4))

3x4

two-dimensional array full of 64-bit floating point ones

eye(3)

eye(3)

3x3

identity matrix

diag(a)

diag(a)

vector of

diagonal elements ofa

diag(a,0)

diag(a,0)

square

diagonal matrix whose nonzero values are the elements

ofa

rand(3,4)

random.rand(3,4)

random

3x4 matrix

linspace(1,3,4)

linspace(1,3,4)

4 equally

spaced samples between 1 and 3, inclusive

[x,y]=meshgrid(0:8,0:5)

mgrid[0:9.,0:6.]ormeshgrid(r_[0:9.],r_[0:6.]

two 2D

arrays: one of x values, the other of y values

ogrid[0:9.,0:6.]orix_(r_[0:9.],r_[0:6.]

the best

way to eval functions on a grid

[x,y]=meshgrid([1,2,4],[2,4,5])

meshgrid([1,2,4],[2,4,5])

ix_([1,2,4],[2,4,5])

the best

way to eval functions on a grid

repmat(a, m, n)

tile(a, (m, n))

create m

by n copies ofa

[a b]

concatenate((a,b),1)orhstack((a,b))orcolumn_stack((a,b))orc_[a,b]

concatenate

columns ofaandb

[a; b]

concatenate((a,b))orvstack((a,b))orr_[a,b]

concatenate

rows ofaandb

max(max(a))

a.max()

maximum

element ofa(with

ndims(a)<=2 for matlab)

max(a)

a.max(0)

maximum

element of each column of

matrixa

max(a,[],2)

a.max(1)

maximum

element of each row of matrixa

max(a,b)

maximum(a, b)

comparesaandbelement-wise,

and returns the maximum value from each pair

norm(v)

sqrt(dot(v,v))ornp.linalg.norm(v)

L2 norm

of vectorv

a & b

logical_and(a,b)

element-by-element

AND operator (Numpy ufunc)

a | b

logical_or(a,b)

element-by-element

OR operator (Numpy ufunc)

bitand(a,b)

a & b

bitwise

AND operator (Python native and Numpy ufunc)

bitor(a,b)

a | b

bitwise

OR operator (Python native and Numpy ufunc)

inv(a)

linalg.inv(a)

inverse

of square matrixa

pinv(a)

linalg.pinv(a)

pseudo-inverse

of matrixa

rank(a)

linalg.matrix_rank(a)

matrix

rank of a 2D array / matrixa

a\b

linalg.solve(a,b)ifais

square;linalg.lstsq(a,b)otherwise

solution

of a x = b for x

b/a

Solve a.T

x.T = b.T instead

solution

of x a = b for x

[U,S,V]=svd(a)

U, S, Vh = linalg.svd(a), V = Vh.T

singular

value decomposition ofa

chol(a)

linalg.cholesky(a).T

cholesky

factorization of a matrix (chol(a)in

matlab returns an upper triangular matrix, butlinalg.cholesky(a)returns

a lower triangular matrix)

[V,D]=eig(a)

D,V = linalg.eig(a)

eigenvalues

and eigenvectors ofa

[V,D]=eig(a,b)

V,D = np.linalg.eig(a,b)

eigenvalues

and eigenvectors ofa,b

[V,D]=eigs(a,k)

find

theklargest

eigenvalues and eigenvectors

ofa

[Q,R,P]=qr(a,0)

Q,R = scipy.linalg.qr(a)

QR

decomposition

[L,U,P]=lu(a)

L,U = scipy.linalg.lu(a)orLU,P=scipy.linalg.lu_factor(a)

LU

decomposition (note: P(Matlab) == transpose(P(numpy)) )

conjgrad

scipy.sparse.linalg.cg

Conjugate

gradients solver

fft(a)

fft(a)

Fourier

transform ofa

ifft(a)

ifft(a)

inverse

Fourier transform ofa

sort(a)

sort(a)ora.sort()

sort the

matrix

[b,I] = sortrows(a,i)

I = argsort(a[:,i]), b=a[I,:]

sort the

rows of the matrix

regress(y,X)

linalg.lstsq(X,y)

multilinear

regression

decimate(x, q)

scipy.signal.resample(x, len(x)/q)

downsample

with low-pass filtering

unique(a)

unique(a)

squeeze(a)

a.squeeze()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【为什么要学习NumpyNumPyPython语言的一个扩展程序库。支持多维数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。Numpy是人工智能、数据分析从业者必备的知识和技能,也是学习后续Python扩展库(Matplotlib, SciPy, Pandas, Seaborn, Scikit-image等)的基础。【推荐你学习这门课的理由】(1)图文并茂:课程采用Jupyter Notebook讲解,图文并茂,讲述与Numpy代码对应。其文件将分享给学员,可作为交互式电子书使用。(2)案例丰富: 每个知识点均有Numpy代码示例说明;难点使用图解说明和讲述。另提供Numpy项目实战案例-鸢尾花数据集上的数据分析与计算。(3)内容全面系统:涵盖了Numpy的基础用法和高级用法,包括:ndarray、创建数组、复制数组、数组访问、数组运算、数组操作、迭代数组、maskedarray、结构化数组、通用函数、数学函数、统计函数、排序函数、条件查找、随机数、字节交换、线性代数、数据文件读写等。   玩转是一种境界,显示了对该领域有很大的兴趣,并非常了解和能娴熟使用。希望本课程能帮助大家玩转Numpy!【优惠说明】 课程正在优惠! 备注:购课后可加入白勇老师课程学习交流QQ群:957519975【相关课程】《玩转Matplotlib数据绘图库》课程链接:https://edu.csdn.net/course/detail/28720 《Python编程的术与道:Python语言入门》课程链接: https://edu.csdn.net/course/detail/27845  《Python编程的术与道:Python语言进阶》课程链接: https://edu.csdn.net/course/detail/28618 【课程体系结构图】  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值