Python学习-Scipy库
目录
1、Scipy库的简单介绍
2、几种数学、物理常量
物理、时间、长度
3、特殊数学函数:special
1)逻辑回归模型logit()
2)求立方根
1、Scipy库的简单介绍
Scipy是一个高级科学计算库,主要有以下子模块:
spcial: 特殊数学函数; io: 数据输入输出;
linalg: 线性代数; stats: 统计
integrate: 积分; spatial: 空间算法和数据结构;
sparse: 稀疏矩阵; ignal: 信号处理;
interpolate: 插值; optimize: 优化;
odr: 正交距离回归; ndimage: 多维图像处理;
cluster: 聚类; ffpack: 傅里叶变换
导入库
import scipy.constants as cn
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import logit # 逻辑回归模型
from scipy.linalg import lu # lu分解
2、几种数学、物理常量
# 几种数学、物理常量
print("黄金比例:", cn.golden) # 等价于cn.golden_ratio
print("光速:", cn.c) # 等价于cn.speed_of_light
print("摩尔气体常数:", cn.R) # 等价于cn.gas_constant
print("精细结构常数:", cn.alpha) # 等价于cn.fine_structure
print("玻尔兹曼常数:", cn.k) # 等价于cn.Boltzmann
print("1角度圆对应的弧度:", cn.degree) # 1角度圆对应的弧度
# 时间
print("一分钟的秒数:", cn.minute) # 一分钟的秒数
print("一小时的秒数:", cn.hour) # 一小时的秒数
print("一天的秒数:", cn.day) # 一天的秒数
print("一年的秒数:", cn.year) # 一年的秒数
print("一朱利安年(365.25天)的秒数:", cn.Julian_year) # 一朱利安年(365.25天)的秒数
# 长度
print("一英寸的米数:", cn.inch) # 一英寸的米数
print("一英里的米数:", cn.mile) # 一英里的米数
print("一光年的米数:", cn.light_year) # 一光年的米数
输出
黄金比例: 1.618033988749895
光速: 299792458.0
摩尔气体常数: 8.314462618
精细结构常数: 0.0072973525693
玻尔兹曼常数: 1.380649e-23
1角度圆对应的弧度: 0.017453292519943295
一分钟的秒数: 60.0
一小时的秒数: 3600.0
一天的秒数: 86400.0
一年的秒数: 31536000.0
一朱利安年(365.25天)的秒数: 31557600.0
一英寸的米数: 0.0254
一英里的米数: 1609.3439999999998
一光年的米数: 9460730472580800.0
3、特殊数学函数:special
1)逻辑回归模型logit()
逻辑回归模型是一个离散选择法模型,公式为:logit(p )= log(p/(1-p))
当p>1或p<0时,logit( p)返回nan;
当p=0时,logit( p)返回-inf;
当p=1时,logit( p)返回inf;
参数p的正常范围为(0,1)
from scipy.special import logit
"""
逻辑回归模型:离散选择法模型 logit(p) = log(p/(1-p))
当p>1或p<0时,logit(p)返回nan;
当p=0时,logit(p)返回-inf;
当p=1时,logit(p)返回inf;
参数p的正常范围为(0,1)
"""
x = np.linspace(0, 1, 30)
y = logit(x)
print(y)
plt.figure(1)
plt.rc('font', family='simhei', size=15) # 设置中文显示,字体大小
plt.rc('axes', unicode_minus=False) # 该参数解决负号显示的问题
plt.scatter(x=x, y=y, s=20, marker='*', color='green')
# plt.plot(x, y, color='y')
plt.xlabel('x轴')
plt.xlabel('y轴')
plt.title("逻辑回归散点曲线")
plt.show()
输出
[ -inf -3.33220451 -2.60268969 -2.15948425 -1.83258146 -1.56861592
-1.34373475 -1.1451323 -0.9650809 -0.7985077 -0.64185389 -0.49247649
-0.34830669 -0.20763936 -0.06899287 0.06899287 0.20763936 0.34830669
0.49247649 0.64185389 0.7985077 0.9650809 1.1451323 1.34373475
1.56861592 1.83258146 2.15948425 2.60268969 3.33220451 inf]
2)求立方根:cbrt(x),等价于pow(x,1/3)
# 求立方根:cbrt(x),等价于pow(x,1/3)
from scipy.special import cbrt
plt.figure(2)
plt.rc('font', family='simhei', size=15) # 设置中文显示,字体大小
plt.rc('axes', unicode_minus=False) # 该参数解决负号显示的问题
x = np.arange(10)
y = cbrt(x)
print(y)
plt.scatter(x=x, y=y, s=20, marker='v', color='red')
plt.xlabel('x轴')
plt.xlabel('y轴')
plt.title("立方根散点曲线")
plt.show()
输出
[0. 1. 1.25992105 1.44224957 1.58740105 1.70997595
1.81712059 1.91293118 2. 2.08008382]