【python】用numpy随机生成一元(多元)数据;如线性、指数、三角函数,或者多种样式结合

267 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

用numpy随机生成一元(多元)数据;如线性、指数、三角函数,或者多种样式结合

题目

1.用numpy随机生成一元(多元)数据;如线性、指数、三角函数,或者多种样式结合;
2.画出数据散点图和模型曲线。
a)设置xy轴的坐标范围;
b)散点图和模型曲线用不同颜色

代码

from mpl_toolkits.mplot3d import Axes3D 
import numpy as np
from matplotlib import pyplot as plt
import random

fig = plt.figure()
ax = Axes3D(fig)
x=np.arange(-30,30,1)
y=np.arange(-30,30,1)
x, y = np.meshgrid(x, y)
z=x**2*y+y**2*x

ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')

ax.plot_surface(x, y, z, cmap='rainbow')

# 散点图
for i in range(0,60):
	for j in range(0,60):
		x[i][j]=x[i][j]+random.uniform(-5,5)
		y[i][j]=y[i][j]+random.uniform(-5,5)
		z[i][j]=z[i][j]+random.uniform(-5,5)

# 散线图
# for i in range(0,60):
# 	x[i]=x[i]+random.uniform(-5,5)
# 	y[i]=y[i]+random.uniform(-5,5)
# 	z[i]=z[i]+random.uniform(-5,5)

ax.scatter(x, y, z,marker=".",color="red")
plt.show()

结果

在这里插入图片描述

结果上图所示,其中红点为三位平面周围随机生成的散点图。由于二维坐标系下散点图较容易实现,因此我实现了较之更为复杂的三维平面散点图拟合。初始的三维平面方程为 z=xxy+yyx,如下图

在这里插入图片描述

由于初始图像为三维平面,既然能够生成一维散点图,那么必然可以生成二维散线图。

在这里插入图片描述

在实现过程中,我们通过meshgrid函数实现对x与y坐标的存储,其存储原理如上图。因此我们可以通过然x或y二维数组中每一行加上同样的任意随机数,达到生成随机曲线的目的,最终结果如下图所示。

在这里插入图片描述