目录
#系数矩阵
#定义:当矩阵中的数值为0的元素数目远远多于非0元素的数目,并且非0元素分布没有规律,这样的矩阵就成为稀疏矩阵。
from scipy.sparse import *
import numpy as np
#使用一个已有的矩阵、数组或列表中创建新矩阵
A=coo_matrix([[1,2,0],[0,0,3],[4,0,5]])
print(A)
#转化为普通矩阵
C=A.todense()
print(C)
#传入一个(data,(row,col))的元组来构建稀疏矩阵
I=np.array([0,3,1,0])
J=np.array([0,3,1,2])
data=np.array([4,5,7,9])
A=coo_matrix((data,(I,J)),shape=(4,4))
#矩阵中数据为data=[4,5,7,9],说明第1个数据是4,在第0行第0列,
print(A)
#矩阵运算
from scipy import linalg
import numpy as np
A=np.matrix('[1,2;3,4]')
print(A)
print(A.T)#矩阵的转置
print(A.I)#矩阵的逆
print(linalg.inv(A))#矩阵的逆
#线性方程组求解
from scipy import linalg
import numpy as np
a=np.array([[1,3,5],[2,5,-1],[2,4,7]])
b=np.array([10,6,4])
x=linalg.solve(a,b)
print(x)
#非线性方程组求解
from scipy.optimize import fsolve
from math import sin
def f(x):
x0,x1,x2=x.tolist()
return [5*x1+3,4*x0*xo-2*sin(x1*x2),x1*x2-1.5]
#f计算方程组的误差,[1,1,1]是未知数的初始值
result=fsolve(f,[1,1,1])
print(result)
print(f(result))
#函数最值
from scipy.optimize import minimize
import numpy as np
#计算1/x+x的最小值
def fun(args):
a=args
v=lambda x:a/x[0]+x[0]
return v
if __name__ =="_main_":
args=(1)#a
x0=np.asarray((2))#初始猜测值
res=minimize(fun(args),x0,method='SLSQP')
print(res.fun)
print(res.success)
print(res.x)
#图像处理
#加载图片
from scipy import ndimage
import matplotlib.image as mpimg
import matplotlib.pyplot as plt
flower=mpimg.imread('d://flower.jpg')
plt.imshow(flower)
plt.title('original')
#旋转图像45度
rotate_flower=ndimage.rotate(flower,45)
plt.imshow(rotate_flower)
plt.title('rotate_flower')
#图像滤波
flower1=ndimage.gaussion_filter(flower,sigma=3)
plt.imshow(flower1)
plt.show()#显示图片
#边缘检测
import scipy.ndimage as nd
import numpy as np
im=np.zeros((256,256))
im[64:-64,64:-64]=1
im[90:-90,90:-90]=2
im=nd.gaussion_filter(im,8)
import matplotlib.pyplot as plt
plt.imshow(im)
plt.show()