科学计算和可视化
一.读书笔记
(1)numpy库
科学计算包,支持N维数组运算、处理大型矩阵、成熟的广播函数库、矢量运算、线性代数、傅里叶变换、随机数生成,可与C++/Fortran语言无缝结合
np.array([x,y,z],dtype=int) 从Python 列表和元组创造数组
np.arange(x,y,i) 创建一个由x到y,以;为步长的数组
np.linspace(x,y,n) 创建一个由x到y,等分成n个元素的数组
np.indices((m,n)) 创建一个m行n列的矩阵
np.random.rand(m,n) 创建一个㎡行n列的随机数组
np.ones((m,n),dtype) 创建一个m行n列全1的数组,dtype 是数据类型
np.empty((m,n),dtype) 创建一个m行n列全0的数组,dtype 是数据类型
ndarray 类
ndarray.ndim 数组轴的个数,也被称作秩
ndarray.shape 数组在每个维度上大小的整数元组
ndarray.size 数组元素的总个数
ndarray.dtype 数组元素的数据类型,dtype 类型可以用于创建数组中
flat #返回
np.nonzero([1,0,2,0,1,0,4,0])#返回一维数组中非 0 元素的位置索引
np.dot(A, B)#矩阵相乘
np.power(x,4)#对x数组的每个值4次方
np.set_printoptions(precision=2)#对于二维随机数组中各元素,保留其 2 位小数
Z/1e3#科学记数法输出 NumPy(Z) 数组
a.argsort()#打印各元素在数组中升序排列的索引
a.real #属性,数组a的实部
a.imag #属性,数组a的虚部
numpy.linalg.inv()# 函数计算矩阵的乘法逆矩阵。
numpy.linalg.solve() #函数给出了矩阵形式的线性方程的解。
umpy.matlib.eye() #函数返回一个矩阵,对角线元素为 1,其他位置为零。
np.c_[M1, M2]#按列连接两个数组
np.r_[M1, M2]#按行连接两个数组
(2)matplotlib库
plt.figure(figsize-None,facecolor=None) 创建一个全局绘图区域
plt.axes(rect,axisbg='w") 创建一个坐标系风格的子绘图区域
plt.subplot(nrows,ncols,plot_number) 在全局绘图区域中创建一个子绘图区城
plt.subplots_adjust() 调整子图区域的布局
plt.legend() 在绘图区域中方式绘图(也称图注)
plt.show() 显示创建的绘图对象
plt.matshow() 在窗口显示数组矩阵
plt.imshow() 在 axes 上显示图像
plt.imsave() 保存数组为图像文件
plt.imread() 从图像文件中读取数组
matplotlib.pyplot 模块可以画折线图,分为两个步骤,分别是 pyplot.plot() 和 pyplot.show() ,前者负责画图,后者将画好的图展示出来。
pyplot.plot( Series1 , Series2 ) 以 Series1 作为横坐标, Series2 作为纵坐标画出折线图;
在执行 2 中的函数后,可以使用 pyplot.xticks( rotation = 45 ) 将 x 轴的坐标显示逆时针旋转 45 ° ,默认为 0 °,也就是水平的,同理,可以用 pyplot.yticks( rotation = 45 ) 对 y 轴坐标做同样的操作。
可以使用 pyplot.xlabel( str ) 将 x 轴命名为 str 的值,同理可以用 pyplot.ylabel( str ) 将 y 轴命名为 str 的值。
可以使用 pyplot.title( str ) 为画出的折线图命名。
二.成绩雷达图
Author: 东锦林
'''
import numpy as np
import matplotlib.pyplot as plt
#标签
labels = np.array(['第一周','第二周','第三周','第四周','第五周','第六周'])
#数据个数
dataLenth = 6
#数据
data = np.array([9.0,9.1,9.2,9.0,9.7,8.8])
angles = np.linspace(0, 2*np.pi, dataLenth, endpoint=False)
data = np.concatenate((data, [data[0]])) # 闭合 # #将数据结合起来
angles = np.concatenate((angles, [angles[0]])) # 闭合
fig = plt.figure()
ax = fig.add_subplot(121, polar=True)# polar参数!!代表画圆形!!!!
#111代表总行数总列数位置
ax.plot(angles, data, 'bo-', linewidth=1)# 画线四个参数为x,y,标记和颜色,闲的宽度
ax.fill(angles, data, facecolor='r', alpha=0.1)# 填充颜色和透明度
ax.set_thetagrids(angles * 180/np.pi, labels, fontproperties="SimHei")
ax.set_title("东锦林的成绩表\n2019310143135", va='baseline', fontproperties="SimHei")
ax.set_rlim(0,10)
ax.grid(True)
plt.show()
三.数学规律
x+y=1
题目:|x| + |y| = 1
1 import numpy as np 2 import matplotlib.pyplot as plt 3 4 x = np.arange(-1.1, 1.1, .01) 5 y = np.arange(-1.1, 1.1, .01) 6 x, y = np.meshgrid(x, y) 7 8 f = np.abs(x) + np.abs(y) - 1 9 plt.figure() 10 plt.contour(x, y, f, 0,) 11 plt.title(r'$\left|x\right|+\left|y\right|=1$') 12 plt.show()