>>> import numpy as np >>> import scipy.linalg as sl >>> m = 30 >>> n = 15 >>> A = np.random.random((m,n)) >>> b = np.random.random((m,1)) >>> res = sl.lstsq(A,b) >>> x = res[0] >>> residual = sl.norm(np.dot(A,x)-b,ord=2) >>> print(residual)
使用scipy.linalg中的lstsq和norm函数可以实现以上功能。
>>> import numpy as np >>> import scipy.optimize as opt >>> def function(x): return (np.sin(x-2)**2)*(np.exp(-1*(x**2))) >>> f = lambda y: -function(y) >>> result = opt.minimize_scalar(f) >>> print('maximum',-1*result['fun']) maximum 0.9116854118471548scipy.optimize的最优化方法只能求函数的最小值,因此要取反求最大之后再取反。
>>> import numpy as np >>> import scipy.spatial.distance as dist >>> n = 5 >>> m = 10 >>> X = np.random.randint(5,20,size=(n,m)) >>> Distance = dist.cdist(X,X) >>> print(Distance)