Scipy-1.introduction+basic function

scipy 用于以下的科学领域中的Subpackage及简述

  • cluster:用于聚类算法
  • constants: 用于物理里面的常数,例如光速c
  • integrate: 积分和微分方程
  • interpolate:插值
  • signal:信号处理
  • linalg:线性代数
  • ndimage:N纬图形
  • optimize:最优化
  • sparse:稀疏矩阵
  • stats:统计分布

常数和特殊函数实例

from scipy import constants as C
print(C.c) # 真空中的光速
print(C.c) # 普朗克常量
#299792458.0
#6.62607015e-34
# 1英里等于多少米, 1英寸等于多少米, 1克等于多少千克, 1磅等于多少千克
print(C.mile)
print(C.inch)
print(C.gram)
print(C.pound)

1609.3439999999998
0.0254
0.001
0.45359236999999997

  • l o g 1 p log1p log1p函数:做平滑处理,在有时能使数据更接近与高斯分布
    l o g 1 p ( x ) = l o g ( x + 1 ) log1p(x)= log(x+1) log1p(x)=log(x+1) l n ( x + 1 ) ln(x+1) ln(x+1)
    因此当数据很小的时候, l n ( x + 1 ) = x ln(x+1)=x ln(x+1)=x 等价无穷小
    e x p m 1 ( x ) = e x p ( x ) − 1 expm1(x) = exp(x)-1 expm1(x)=exp(x)1
import numpy as np
import scipy.special as S
print(1 + 1e-20)# 1+10的负20次方
print(np.log(1+1e-20))
print(S.log1p(1e-20))

1.0
0.0
1e-20

m = np.linspace(0.1, 0.9, 4)
u = np.linspace(-10, 10, 200)
results = S.ellipj(u[:, None], m[None, :])
print([y.shape for y in results])
#%figonly=使用广播计算得到的`ellipj()`返回值
import matplotlib.pyplot as plt
fig, axes = pl.subplots(2, 2, figsize=(12, 4))1
labels = ["$sn$", "$cn$", "$dn$", "$\phi$"]
for ax, y, label in zip(axes.ravel(), results, labels):
    ax.plot(u, y)
    ax.set_ylabel(label)
    ax.margins(0, 0.1)
    
axes[1, 1].legend(["$m={:g}$".format(m_) for m_ in m], loc="best", ncol=2)

在这里插入图片描述结果如下

  • 贝塞尔函数是贝塞尔具有实阶或复阶alpha的微分方程的一系列解决方案:
    x 2 d 2 y d x 2 + x d y d x + ( x 2 − a 2 ) y = 0 x^2\frac{d^2 y}{dx^2}+x\frac{dy}{dx}+(x^2-a^2)y=0 x2dx2d2y+xdxdy+(x2a2)y=0
    在其他用途​​中,这些功能会出现在波传播问题中,例如薄磁鼓鼓头的振动模式。
    这是一个固定在边缘的圆形鼓头示例:
from scipy import special
def drumhead_height(n, k, distance, angle, t):
    kth_zero = special.jn_zeros(n, k)[-1]
    return np.cos(t) * np.cos(n*angle) * special.jn(n, distance*kth_zero)
theta = np.r_[0:2*np.pi:50j]
radius = np.r_[0:1:50j]
x = np.array([r * np.cos(theta) for r in radius])
y = np.array([r * np.sin(theta) for r in radius])
z = np.array([drumhead_height(1, 1, r, theta, 0.5) for r in radius])
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
fig = plt.figure()
ax = Axes3D(fig)
ax.plot_surface(x, y, z, rstride=1, cstride=1, cmap=cm.jet)
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
plt.show()

在这里插入图片描述

posted @   JOJO数据科学  阅读(39)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示