数学建模笔记(一)

数学建模笔记(一)

numpy模块

import numpy as np

  1. 数组创建
  • array 将列表或元组转换为 ndarray 数组
    a = np.array([1, 2, 3, 4])
  • arange 在给定区间内创建等差数组
    arrange(start=None, stop=None, step=None, dtpye=None)
  • linspace 在给定区间内创建间隔相等的数组
    linspace(start, stop, num=50, endpoint=True)
  • logspace 在给定区间上生成等比数组
    logspace(start, stop, num=50, endpoint=True, base=10.0)
    ::默认生成区间 [10^statrt, 10^stop]上的 num 个数据的等比数组::

Numpy中很多操作都是基于axis进行的,所以对axis有个正确的理解十分重要!
(Numpy:对Axis的理解 - 知乎

astype修改数组类型,dtype可查看数组类型也可在创建数组时作为参数指定数组类型,示例代码如下:

import numpy as np 
a1 = np.array([1, 2, 3, 4])   #生成整型数组 
a2 = a1.astype(float) 
a3 = np.array([1, 2, 3, 4], dtype=float)   #浮点数 
print(a1.dtype); print(a2.dtype); print(a3.dtype) 
b = np.array([[1, 2, 3], [4, 5, 6]]) 
c = np.arange(1,5)        #生成数组[1, 2, 3, 4] 
d = np.linspace(1, 4, 4)  #生成数组[1, 2, 3, 4] 
e = np.logspace(1, 3, 3, base=2)  #生成数组[2, 4, 8]

使用ones,zeros,eyes,empty,ones_like创建特定类型数组

二维数组的访问可用a[i, j]a[i][j]

  1. 矩阵的合并与分割

#程序文件 ex2_28.py 
import numpy as np 
a = np.arange(16).reshape(4,4)  #生成 4 行 4 列的数组 
b = np.floor(5*np.random.random((2, 4))) 
c = np.ceil(6*np.random.random((4, 2))) 
d = np.vstack([a, b])  #上下合并矩阵 
e = np.hstack([a, c])  #左右合并矩阵 
2.矩阵的分割
vsplit(a, m)把 a 平均分成 m 个行数组,hsplit(a, n)把 a 平均分成 n 个列向量。例 2.29  矩阵分割示例。
#程序文件 ex2_29.py
import numpy as np
a = np.arange(16).reshape(4,4)  #生成 4 行 4 列的数组
b = np.vsplit(a, 2)             #行分割
print('行分割:\n',b[0], b[1])
c = np.hsplit(a, 4)             #列分割
print('列分割:\n', c[0], '\n', c[1],


  1. 矩阵运算与线性代数
  • +、-、、/*都是矩阵的对应元素相乘
  • @是矩阵乘法
  • np.dot()是矩阵乘法;np.multiply()是矩阵点乘
  • 线性运算使用numpy.linalg模块
    数学建模笔记(一)_第1张图片

应用场景:

  1. 解线性方程组
  2. 解超定线性方程组的最小二乘解
  3. 求矩阵的特征值和特征向量

pandas模块

import pandas as pd

参考资料

  1. Python之Pandas库常用函数大全(含注释)_TensorSense的博客-CSDN博客_pandas var函数
  2. Pandas库的介绍 - 简书

pandas提供了Series、DataFrame、Panel三种数据结构。

  • 创建Series类型
    Series类型是一组数据及与之相关的数据索引组成

数学建模笔记(一)_第2张图片

从列表、字典、ndarray等创建。

a = pd.Series([9, 8, 7, 6])
# 自定义索引
a = pd.Series([9, 8, 7, 6], index = [‘a’, ‘b’, ‘c’, ‘d’])
# 从ndarray创建
a = pd.Series(np.arange(5), index = np.arange(9, 4, -1))

index 获得索引 .values 获得数据

  • 创建DataFrame类型

数学建模笔记(一)_第3张图片

可从Series,一维ndarray对象,列表等构成的字典,二维ndarray对象创建。

# 从二维ndarray创建
d= pd.DataFrame(np.arange(10).reshape(2,5))
# index, colums 行列自定义索引
  • 读写EXCELCSV文件
    写文件
    to_excel(file_path)
    to_csv(file_path)
    读文件
    pd.read_excel(file_path)
    pd.read_csv(file_path)

  • 文件操作
    数学建模笔记(一)_第4张图片
    with open(filename, mode, encoding) as fp: #通过文件对象fp读写文件内容

np读取和写入text文件

import numpy as np
a=np.random.rand(6,8)  #生成6.8的[0,1)上均匀分布的随机数矩阵
np.savetxt("data2_43_1.txt",a)  #存成以制表符分隔的文本文件
np.savetxt("data2_43_2.csv",a,delimiter=',')  #存成以逗号分隔的文本文件
b=np.loadtxt("data2_43_1.txt")   #加载空格分隔的文本文件
c=np.loadtxt("data2_43_2.csv",delimiter=',')  #加载csv文件

SciPy

数学建模笔记(一)_第5张图片

# 解非线性方程
from scipy.optimize import fsolve, root
fx = lambda x:     x**980-5.01*x**979+7.398*x**978\
-3.388*x**977-x**3+5.01*x**2-7.398*x+3.388
x1=fsolve(fx,1.5,maxfev=4000)  #函数调用4000次
x2 = root(fx, 1.5)
print(x1,'\n','-------------'); print(x2)

Sympy

符号计算

Matplotlib库(重要)

  • 二维绘图
    画折线图:
    Python–matplotlib绘图_guoziqing506的博客-CSDN博客_python画图
plot(x, y, s)
# x表示横坐标
# y表示纵坐标
# s指定线条颜色、线条样式和数据点形状的字符串

数学建模笔记(一)_第6张图片

数学建模笔记(一)_第7张图片

  • 柱状图
    参考资料:Python——使用matplotlib绘制柱状图_小黄鸭的博客-CSDN博客_plt 柱状图介绍的很详细

Python绘制六种可视化图表详解(建议收藏) - 掘金

  • 等高线
    参考资料:python matplotlib contour画等高线图_Mr_Cat123的wudl博客-CSDN博客_python contour

你可能感兴趣的:(数学建模)