我正在尝试使用PsychoPy中的ElementArrayStim制作线元素数组(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)


我从中收到的输出似乎是2个单独的数组(我假设是x轴坐标和y轴坐标),但是它们似乎按照每行列出。

但是,PsychoPy仅接受xys参数的n×2输入-我不确定如何改变输出的形状,所以它的形式为n×2。

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


乘n×2,我的意思是两列具有23×23 = 529行。列将分别用于x和y坐标,并且529行将用于每个元素。

最佳答案

您非常接近,只需要根据xaxisyaxis创建一个3D坐标数组,然后对该3D数组进行整形,以根据需要获得529行×2列2D数组:

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)

07-28 03:07