整理自:带佬详细指南
import numpy as np
目录
构造新矩阵:
#
np.zeros(Dim,dtype=) 元素为0
np.ones(...) 元素为1
np.empty(...) 元素为空
已知转化为np矩阵:
np.asarray(A,dtype) A为任意形式矩阵/元组
#todo
np.array(A,dtype)
构造指定范围和步长的矩阵:
np.arange(start,stop,step,dtype)
np.linspace(start,stop,num,endpoint,dtype) 高级arange num为序列元素数量
np.logspace(start,stop,base,dtype,num) base为基,start和stop为指数
取值:
s=slice(start,stop,step)
A[s] 取以s中元素为下标的A中元素
A[a1:b1,a2:b2,...,an:bn] 对于n维向量,取an到bn的元素
A[X1,X2,...,Xi,...] 其中Xi为[Xi1,Xi2,...,Xij,...],即要取的第j个元素在第i维上的分量
最后取的元素:A[X1j][X2j][...][Xij][...]
写的一坨,不知道怎么描述。矩阵还是得好好上课
A[条件] 满足条件的所有元素,贼强,未来的我要是想处理掉一些值可以用这个!
广播与迭代:(记得补充广播)
np.nditer(A,order) order='C'/'F'竖着串或者横着串,反正串成一条就好遍历了
np.nditer(A,order='F',flags=['external_loop']) 超有用,每个元素是一条竖着的串串(其实也就是转置
一下再遍历每行的串串啦)
矩阵对角线(包含上下三角):
对角线元素的提取与构造:
numpy.eye(n,m,dtype,order,k) k=0默认为主对角线
k<0时k对角线为:[A[-k][0],A[-k+1][1],...,A[-k+i][i],...,
A[n-1][n-1+k]],总之生成一个n*m的k对角线上值为1的矩阵
k>0 同理
numpy.diag(v,k=0) v为二维数组则取第k对角线元素生成一维数组,v为一维数组则构造一个对角线矩阵(第k个
对角线有值)
ex|np.diag(np.diag(A)) 神中神,返回一个对角矩阵
上三角、下三角的构造:
np.tri(n,m,k,dtype) 生成一个下三角矩阵,第k,k-1,...,k-i,...,-(n-1)个对角线元素均为1
np.tril(A,k) 构造一个下三角矩阵,取A的第k,k-1,...,k-i,...,-(n-1)个对角线,其余对角线元素为0
np.triu(A,k) 构造一个上三角矩阵,取A的第k,k+1,...,k+i,..., (n-1)个对角线,其余对角线元素为0
矩阵运算:
np.sum(A,axis) #对矩阵的第axis维的向量进行求和,第axis-1维元素=合并所有第axis维元素
#使得d0*d1*d2*...*dn变为d0*d1*d2*d(axis-1)*d(axis+1)*...*dn
#A[0:d0]...[0:d(axis-1)]=sum(d[d0]...[d(axis)][:])
A.T:转置
整理自:带佬运算相关
//todo