Python 如何获取等间距阵列的位置坐标(n×;2)?

Python 如何获取等间距阵列的位置坐标(n×;2)?,python,arrays,numpy,psychopy,Python,Arrays,Numpy,Psychopy,我正在尝试使用PsychoPy的方法制作一个线元素数组(23×23网格) 对于线元素位置的xys参数,我试图以统一的方式(23×23网格)定位线元素 我已尝试通过执行以下操作来获取元素的位置: nx, ny = (23, 23) xaxis = np.linspace(-220, 220, nx) yaxis = np.linspace(-220, 220, ny) yx = np.meshgrid(xaxis, yaxis) 我从中接收的输出似乎是两个独立的数组(我假设是x轴坐标和y轴坐标

我正在尝试使用PsychoPy的方法制作一个线元素数组(23×23网格)

对于线元素位置的
xys
参数,我试图以统一的方式(23×23网格)定位线元素

我已尝试通过执行以下操作来获取元素的位置:

nx, ny = (23, 23)
xaxis = np.linspace(-220, 220, nx)
yaxis = np.linspace(-220, 220, ny)

yx = np.meshgrid(xaxis, yaxis)
我从中接收的输出似乎是两个独立的数组(我假设是x轴坐标和y轴坐标),但它们似乎是按每行列出的

然而,PsychoPy只接受'xys参数的n×2输入——我不知道如何改变输出的形状,使其以n×2的形式出现

另外,如果我使用的方法不正确/效率低下,那么实现n×2形状中的
xys
位置元素的最佳方法是什么

  • n×2是指两列23×23=529行。列将分别用于x和y坐标,529行将用于每个元素
是否需要在两个轴上循环,同时将每个元素附加到数组中

fred=np.array([[],[]])
for column in xaxis:
    for row in yaxis:
        fred = np.append(fred, [[column], [row]], 1)

fred.shape
(2, 529)

您非常接近,只需要从
xaxis
yaxis
创建一个坐标的三维数组,然后根据需要重新设置该三维阵列,以获得529行×2列二维数组:

In [21]: xy = np.dstack(np.meshgrid(xaxis, yaxis)).reshape(-1, 2)

In [22]: xy
Out[22]: 
array([[-220, -220],
       [-200, -220],
       [-180, -220],
       ..., 
       [ 180,  220],
       [ 200,  220],
       [ 220,  220]])

In [23]: xy.shape
Out[23]: (529L, 2L)
或者,您可以通过以下方法获得相同的结果:

xy = np.mgrid[-220:240:20, -220:240:20].T.reshape(-1, 2)

非常感谢@Tonechas。使用转置(.T)并不像你第一个建议那样有效——它非常有效。