数学建模笔记(一)python使用入门

文章目录

  • 数学建模笔记(一)python使用入门
      • 常用内置函数
      • numpy数组
          • 创建
          • 合并与分割
          • 矩阵运算
      • Pandas库
          • 读写EXCEL和CSV文件
      • Matplotlib库 *
          • 二维绘图
            • 折线图:
            • 柱状图
            • 饼图
            • 子图
          • 三维绘图

数学建模笔记(一)python使用入门

这一节课讲的比较基础,就把常用的库和函数列出来加深印象

常用内置函数

dir(__builtins__)  # 查看所有内置函数和内置对象
help(函数名) # 查看函数的用法
eval(s)  # 反回字符串表示的值
sorted(x,key=lambda x:x) # 指定规则排序
enumerate(x) # 同时获得索引和值
map(fuc, [1,2,3,4,5])  # 对所有元素执行fuc操作
filter(lambda x: x>10,[1,2,43,123]) # 过滤不满足条件的对象
zip('abcd',range(4)) # 将两个列表对应元素构成元组

numpy数组

创建
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]
f = np.eye(3) # 三阶单位阵
g = np.eye(3, k=1) #生成第k 对角线的元素为1,其他元素为0 的3 阶方阵
合并与分割

合并

import numpy as np
a = np.arange(16).reshape(4,4) # 生成 4 行 4 列的数组
b = np.floor(5*np.random.random((2, 4))) # floor向上取整
c = np.ceil(6*np.random.random((4, 2))) # ceil向下取整
d = np.vstack([a, b]) # 上下合并矩阵
e = np.hstack([a, c]) # 左右合并矩阵

分割

import numpy as np
a = np.arange(16).reshape(4,4) #
生成 4 行 4 列的数组
b = np.vsplit(a, 2) # 行分割
c = np.hsplit(a, 4) # 列分割
矩阵运算
c = a @ b  # 矩阵乘法
# 解方程组
a = np.array([[3, 1], [1, 2]])
b = np.array([9, 8])
x1 = np.linalg.inv(a) @ b #第一种解法
x2 = np.linalg.solve(a, b) #第二种解法
# 最小二乘解
import numpy as np
a = np.array([[3, 1], [1, 2],[1, 1]])
b = np.array([9, 8, 6])
x = np.linalg.pinv(a) @ b
# 求特征值和特征向量
import numpy as np
a = np.eye(4)
b = np.rot90(a) # 旋转90度
c, d = np.linalg.eig(b)

Pandas库

读写EXCEL和CSV文件

写文件:

import pandas as pd
import numpy as np
dates=pd.date_range(start='20191101',end='20191124', freq='D')
a1=pd.DataFrame(np.random.randn(24,4),index=dates, columns=list('ABCD'))
a2=pd.DataFrame(np.random.randn(24,4))
a1.to_excel('data2_3 8 1.xlsx')
a2.to_csv('data2 _3 8 _2.csv')
f=pd.ExcelWriter('data2_3 8 3.xlsx') # 创建文件对象
a1.to_excel(f,"Sheet1") #把 a1 写入 Excel 文件
a2.to_excel(f,"Sheet2") #把 a2 写入另一个表单中
f.save()

读文件:

import pandas as pd
a=pd.read_csv("data2_3 8 2.csv", usecols=list(range(1,5)))
b=pd.read_excel("data2_3 8 3.xlsx", " usecols=list(range(1,5)))

增删查改

import pandas as pd
import numpy as np
a =pd.DataFrame(np.random.randint(1,6,(5,3)),
index=['a', 'b', 'c', 'd', 'e'],
columns=['one', 'two', 'three'])
print(a)
a.loc['a', 'one'] = np.nan #修改第 1 行第 1 列的数据
b = a.iloc[1:3, 0:2].values #提取第 2 、 3 行,第 1 、 2 列数据
a['four'] = 'bar' #增加第 4 列数 据
a2 = a.reindex(['a', 'b', 'c', 'd', 'e', 'f'])
a3 = a2.dropna() #删除有不确定值的行

Matplotlib库 *

二维绘图

防止中文乱码

rcParams['font.sans serif']=['SimHei'] #用来正常显示中文标签
rcParams['axes.unicode_minus']=False #用来正常显示负号
折线图:
plot(x, y, linestyle, linewidth, color, marker, markersize, markeredgecolor, markerfacecolor,
markeredgewidth, label, alpha)

其中:
linestyle:指定折线的类型,可以是实线、虚线和点画线等,默认为实线。
linewidth:指定折线的宽度。
marker:可以为折线图添加点,该参数设置点的形状。
markersize:设置点的大小。
markeredgecolor:设置点的边框色。
markerfacecolor:设置点的填充色。
markeredgewidth:设置点的边框宽度。
label:添加折线图的标签,类似于图例的作用。
alpha:设置图形的透明度。
绘图样式:
数学建模笔记(一)python使用入门_第1张图片

柱状图
bar(left, height, width=0.8, bottom=None, **kwargs)
# 栗子
import matplotlib.pyplot as plt
data = [5, 20, 15, 25, 10]
plt.bar([0.3, 1.7, 4, 6, 7], data, width=0.6, bottom=[10, 0, 5, 0, 5])
plt.show()

数学建模笔记(一)python使用入门_第2张图片

饼图
y1=np.random.randint(2, 5, 6)
str=['Apple', 'grape', 'peach', 'pear', 'banana', 'pineapple']
plt.pie(y1, labels=str) #饼图
plt.show()

数学建模笔记(一)python使用入门_第3张图片

子图
import matplotlib.pyplot as plt
import numpy as np
y1=np.random.randint(2, 5, 6);
y1=y1/sum(y1); plt.subplot(2, 2, 1);
str=['Apple', 'grape', 'peach', 'pear', 'banana', 'pineapple']
plt.barh(str,y1) #水平条形图
plt.subplot(222); plt.pie(y1, labels=str) #饼图
plt.subplot(212)
x2=np.linspace(0.01, 10, 100);
y2=np.sin(10*x2)/x2
plt.plot(x2,y2)
plt.show()

数学建模笔记(一)python使用入门_第4张图片

三维绘图

三维曲线图

ax=plt.axes(projection='3d') #设置三维图形模式
z=np.linspace(-50, 50, 1000)
x=z**2*np.sin(z); y=z**2*np.cos(z)
ax.plot(x, y, z, 'k')
plt.show()

数学建模笔记(一)python使用入门_第5张图片
三维曲面图

x=np.linspace(-4,4,100);
x,y=np.meshgrid(x,x)
z=50*np.sin(x+y);
ax=plt.axes(projection='3d')
ax.plot_surface(x, y, z, color='y') 
plt.show()

数学建模笔记(一)python使用入门_第6张图片
plot_surface参数:
rstride:行之间的跨度 cstride:列之间的跨度
rcount:设置间隔个数,默认50个,ccount:列的间隔个数 不能与上面两个参数同时出现
cmap:颜色映射表 可选rainbow和coolwarm
ax.contour(X, Y, Z, zdir = ‘z’, offset = -2, cmap = plt.get_cmap(‘rainbow’)) 绘制投影
zdir为投影的平面

你可能感兴趣的:(数学建模训练笔记,python,数学,建模,numpy)