gpt4 book ai didi

python - 如何定义 (x,y) 坐标的二维数组

转载 作者:太空宇宙 更新时间:2023-11-04 04:11:09 26 4
gpt4 key购买 nike

我有一个 (x,y) 坐标的二维空间,我想在 python 中建模,并且想知道一种在 python 中定义二维空间的方法,我可以在其中为一个点 (x,y) 分配多个值。坐标的后期值将根据一些依赖于坐标的计算而改变。

我考虑过使用 numpy 数组根据用户输入的大小创建二维数组。我首先创建了一个 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 数组更好的定义网格的方法吗?

最佳答案

您确实可以为此使用 numpy。一种方法是将 3d 数组定义为 np.zeros((x_coor, y_coor, 2)) 并保存沿最后一个轴的每个坐标。

使用 numpy 获得所需结构的另一种方法是定义 tuplesndarray,并以上述方式更新每个点,即 grid[ x,y] = (value1,value2)。方法如下:

x_coor=135
y_coor=120

grid = np.zeros((5,3), dtype='i,i')
grid[0,0] = (1,2)
grid[2,2] = (5,1)
grid[1,0] = (3,5)

print(grid)
array([[(1, 2), (0, 0), (0, 0)],
[(3, 5), (0, 0), (0, 0)],
[(0, 0), (0, 0), (5, 1)],
[(0, 0), (0, 0), (0, 0)],
[(0, 0), (0, 0), (0, 0)]], dtype=[('f0', '<i4'), ('f1', '<i4')])

如果您想使用多个坐标一次更新多个值,您可以这样做:

grid = np.zeros((5,3), dtype='i,i')

coordinates = np.array([(1,2),(2,2), (0,0)], dtype='i,i')
new_vals = np.array([(12,2),(4,1), (0,9)], dtype='i,i')

grid[tuple(zip(*coordinates))] = new_vals

print(grid)
array([[( 0, 9), ( 0, 0), ( 0, 0)],
[( 0, 0), ( 0, 0), (12, 2)],
[( 0, 0), ( 0, 0), ( 4, 1)],
[( 0, 0), ( 0, 0), ( 0, 0)],
[( 0, 0), ( 0, 0), ( 0, 0)]], dtype=[('f0', '<i4'), ('f1', '<i4')])

请注意,虽然元组不可变,因此如果您计划使用这些坐标执行操作,您应该使用第一种方法。

关于python - 如何定义 (x,y) 坐标的二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56259728/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com