我有一个二维空间的(x,y)坐标,我想在python中建模,并想知道一种方法来定义二维空间,在那里我可以给一个点(x,y)赋多个值,稍后坐标值将根据一些坐标相关的计算而改变。
我考虑过使用numpy array根据用户输入的大小创建2d数组,我从创建一个2d n*m的numpy零数组开始,后面的代码计算是在点上完成的,但是这样每个点(x,y)只有一个值。
import numpy as np
x_coor=135
y_coor=120
grid=np.zeros((x_coor,y_coor)
有没有一种方法可以使它成为grid[x,y]=(value1,value2),有没有比numpy数组更好的方法来定义grid?
3条答案
按热度按时间z2acfund1#
你确实可以使用numpy来完成这个任务,一种方法是将
3d
数组定义为np.zeros((x_coor, y_coor, 2))
,并保存最后一个轴沿着的每个坐标。另一种使用numpy获得所需结构的方法是定义
tuples
的ndarray
,并以上述方式更新每个点,即grid[x,y] = (value1,value2)
。如果要使用多个坐标一次更新多个值,可以执行以下操作:
但是要注意元组是 * 不可变的 *,所以如果您打算对这些坐标执行操作,应该使用第一种方法。
zbsbpyhn2#
对您问题的简短回答:你应该使用panda而不是numpy数组。Numpy是用来加速数组计算的,所以它不允许将数组的每个元素定义为列表。Pandas Dataframe 允许这些类型的操作。下面是你如何在pandas中执行这样的操作。并且特别注意原始 Dataframe 是如何被灵活地定义的,以便它可以在以后被操纵以改变包含在每个单元中的列表的长度:
以下是单元格(2,2)中的条目:
您现在可以根据需要进行更改:
所以现在
为您提供:
xpszyzbs3#
我不确定你的应用程序,但另一个数学启发的解决方案是将2d坐标存储为numpy的复数,存储一个FP double,用于真实的坐标和虚坐标,可以通过
np.real
和np.imag
访问,这也使得减去复数和计算欧几里得距离的绝对值变得容易。