Python常用工具库-实验(6个lab)-Scipy

Scipy

常量

# 导入pi常量
from scipy.constants import*

print("sciPy - pi = %.16f" % pi)
print("真空中的光速 %d" % speed_of_light)
print("普朗克常数 %s" % h)
print("牛顿引力系数 %s" % G)
print("电子的质量 %s" % electron_mass)

傅里叶变换

import numpy as np
#从fftpack中导入fft(快速傅里叶变化)和 ifft(快速傅里叶逆变换)函数
from scipy.fftpack import fft, ifft

#SciPy.fftpack 中,提供了离散余弦变换(DCT)与离散余弦逆变换(IDCT)的实现。
import numpy as np
from scipy.fftpack import dct,idct

#创建一个随机值数组
x= np.array([1.0,2.0,1.0,-1.0,1.5])

#对数组数据进行傅里叶变换
y = fft(x)
print('fft:')
print(y)
#快速傅里叶逆变换
yinv = ifft(y)
print('ifft:')
print(yinv)


y = dct(np.array([4.,3.,5.,10.,5.,3.]))
print(y)


插值

import numpy as np
from scipy import interpolate as intp
import matplotlib.pyplot as plt
from scipy.interpolate import UnivariateSpline

x = np.linspace(0, 4, 12)
y = np.cos(x**2/3 + 4)
plt.plot(x, y, "o")
plt.show()

f1 = intp.interp1d(x, y, kind='linear')
f2 = intp.interp1d(x, y, kind='cubic')
xnew = np.linspace(0, 4, 30)
plt.plot(x, y, 'o', xnew, f1(xnew), '-', xnew, f2(xnew), '--')
plt.legend(['data', 'linear', 'cubic', 'nearest'], loc='best')
plt.show()

x = np.linspace(-3, 3, 50)
y = np.exp(-x**2)+0.1*np.random.randn(50)  # 通过random方法添加噪声
plt.plot(x, y, 'ro', ms=5)

# 平滑参数使用默认值
spl = UnivariateSpline(x, y)
xs = np.linspace(-3, 3, 1000)
plt.plot(xs, spl(xs), 'b', lw=3)  # 蓝色曲线

# 设置平滑参数
spl.set_smoothing_factor(0.5)
plt.plot(xs, spl(xs), 'g', lw=3)  # 绿色曲线

# 设置平滑参数为0
spl.set_smoothing_factor(0)
plt.plot(xs, spl(xs), 'yellow', lw=3)  # 黄色曲线

plt.show()

SciPy.linalg

# 导入scipy和numpy包
from scipy import linalg
import numpy as np

# 声明numpy数组
a = np.array([[1, 3, 5], [2, 5, 1], [2, 3, 8]])
b = np.array([10, 8, 3])

# 求解
x = linalg.solve(a, b)

# 输出解值
print(x)

# 行列式计算
# 声明numpy数组
A = np.array([[3, 4], [7, 8]])

# 计算行列式
x = linalg.det(A)
print(x)

# 声明numpy数组
A = np.array([[3, 4], [7, 8]])

# 求解
l, v = linalg.eig(A)

# 打印特征值
print('特征值')
print(l)

# 打印特征向量
print('特征向量')
print(v)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值