如何在python中创建覆盖整个示例区域的xy网格,并使用特定数量的节点?

如何在python中创建覆盖整个示例区域的xy网格,并使用特定数量的节点?,python,numpy,grid,Python,Numpy,Grid,我在看二维空间数据(x,y,(z)),其中z是x,y的属性,而不是另一个空间维度。我想在我的应用程序中做的是让用户切换“x节点数”滑块。程序查看加载的样本数据,并使用数据的纵横比选择y节点的数量,以便在样本上创建1:1的纵横比网格 这部分很好用。但我知道我需要创建实际的网格数据。我使用itertools来实现这一点,并获得两个数组的所有组合。一个代表x,一个代表y xnodes=#number of x from user choice dx=(max(x)-min(x))/xnodes gr

我在看二维空间数据(x,y,(z)),其中z是x,y的属性,而不是另一个空间维度。我想在我的应用程序中做的是让用户切换“x节点数”滑块。程序查看加载的样本数据,并使用数据的纵横比选择y节点的数量,以便在样本上创建1:1的纵横比网格

这部分很好用。但我知道我需要创建实际的网格数据。我使用itertools来实现这一点,并获得两个数组的所有组合。一个代表x,一个代表y

xnodes=#number of x from user choice
dx=(max(x)-min(x))/xnodes
grid_xy = np.array(list(itertools.product(
            np.arange(min(x),max(x),step=dx),
            np.arange(min(y),max(y),step=dx)))) 
请注意,我在两个数组中都使用dx,因为我希望网格纵横比为1:1。总节点数只会传递给用户,以便他们知道计算是否需要很长时间。我得到的是这样的情况

网格节点并不覆盖整个区域(随着x节点数量的增加,它最终会变得非常接近)。另外,np.arange中固有的舍入意味着它有时会超出样本数据,这就是我想要的,bt有时会低于样本数据。如何确保在仅使用指定给用户的节点数的情况下使用网格捕获所有示例数据?我能看到的一个解决方案是在每个网格列的末尾添加另一行节点。

答案是

self.grid_xy = np.array(list(itertools.product(
     np.linspace(self.min_gx,self.max_gx,num=self.s1.get()),
     np.linspace(self.min_gy,self.max_gy,num=self.s2.get())))) 
或者,没有类结构

self.grid_xy = np.array(list(itertools.product(
     np.linspace(min(x),(max(x),num=x_nodes),
     np.linspace(min(y),(max(y),num=y_nodes)))) 
答案是

self.grid_xy = np.array(list(itertools.product(
     np.linspace(self.min_gx,self.max_gx,num=self.s1.get()),
     np.linspace(self.min_gy,self.max_gy,num=self.s2.get())))) 
或者,没有类结构

self.grid_xy = np.array(list(itertools.product(
     np.linspace(min(x),(max(x),num=x_nodes),
     np.linspace(min(y),(max(y),num=y_nodes)))) 

你看过np.linspace吗?np.linspace(0,9,5),节点=5个数组([0,2.25,4.5,6.75,9.]),或将dx添加到np.arange…。np.arange(x.min(),x.max()+dx)对不起。只是有时间来测试一下。np.linspace起作用了。我不知道linspace总是通过包含端点和为我进行间歇除法来工作。谢谢你看过np.linspace吗?np.linspace(0,9,5),节点=5个数组([0,2.25,4.5,6.75,9.]),或将dx添加到np.arange…。np.arange(x.min(),x.max()+dx)对不起。只是有时间来测试一下。np.linspace起作用了。我不知道linspace总是通过包含端点和为我进行间歇除法来工作。谢谢