0、前言:
- 如果遇到一种应用场景需要将x轴数据和y轴数据所有点映射到坐标系中,需要得到坐标系中x和y映射的坐标点,就要用到meshgrid把x和y映射到坐标系中,然后把得到的结果用ravel把结果转成一维的。
- 用np.c_()把x数据和y数据堆叠在一起,就可以用来输入模型做训练。
1、numpy库中的meshgrid方法:
- 该函数常用于在二维或三维空间中创建网格点坐标
- 示例
python
复制代码
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
x = [1,2,3]
y = [4,5]
X,Y = np.meshgrid(x,y)
display(pd.DataFrame(X))
'''
0 1 2
0 1 2 3
1 1 2 3
'''
display(pd.DataFrame(Y))
'''
0 1 2
0 4 4 4
1 5 5 5
'''
# 组合
# 相交点
XY = np.c_[X.ravel(),Y.ravel()]
display(pd.DataFrame(XY))
'''
0 1
0 1 4
1 2 4
2 3 4
3 1 5
4 2 5
5 3 5
'''
- 理解:通过meshgrid方法,就是相当于把输入的x坐标和输入的y坐标组合在一起对应成网格点,然后把网格点对应x坐标和y坐标以网格点的形式返回。例如我们看到显示返回的x坐标的时候,每一列都是同一个数,返回y坐标中每一行都是同一个数。
2、np.ravel() :
- 在 NumPy 中,你可以使用 np.ravel() 方法来将一个多维数组转换成一个一维数组。
python
复制代码
a = np.array(
[[1,1,1],
[2,2,2],
[3,3,3]]
)
a.ravel() # array([1, 1, 1, 2, 2, 2, 3, 3, 3])
3、np.c_[a,b]:
- numpy中的.c_方法把他们按照坐标的形式组合在一起。np.c_ 或 np.column_stack 将输入的数组以列为主导(左右组合)进行堆叠,生成一个新的数组。输入数组的每一行都会成为新数组的一列。这对于需要将多个一维数组组合成二维数组的情况非常有用。
python
复制代码
a = np.array(
[[1,1,1],
[2,2,2],
[3,3,3]]
)
b = np.array(
[[4,4,4],
[5,5,5],
[6,6,6]]
)
A = np.c_[a,b]
'''
array([[1, 1, 1, 4, 4, 4],
[2, 2, 2, 5, 5, 5],
[3, 3, 3, 6, 6, 6]])
'''
4、sklearn.datasets.make_blobs:
- 这是一个Scikit-learn库中的函数,用于创建带有随机分隔的聚类数据集。
- 示例:
python
复制代码
data,target = make_blobs()
'''
参数:
n_samples=100,样本数量,行数
n_features=2, 特征数量,列数
centers=None,中心点个数,默认3
cluster_std=1.0,聚集,表示每一堆点的聚集程度
center_box=(-10,10),表示中心的范围
'''
plt.scatter(data[:,0],data[:,1],c=target)