我用一个numpy数组来表示一个垂直的正方形格子(一个元素连接到上面的一个,下面的一个,到右边和左边,但是不是对角的)。我需要从晶格中选择一个随机元素,并将其值更改为随机相邻元素的值。有简单的方法吗?在
目前,我最好的方法是从行和列索引中随机选择,然后尝试元素是否有四个邻居,然后尝试是否缺少左侧、右侧、顶部、底部,最后尝试四个角点。这看起来真的很麻烦。在
我的数据是-1,+1随机分布在晶格中:
lattice=np.random.uniform(low=0.0, high=1.0, size=[30,30])
lattice[lattice<0.2]=-1
lattice[lattice>0.2]=1
假设随机元素是lattice[0,0]
,那么我期望返回的晶格是
编辑:我很抱歉之前对复数的错误用法。在
使用scipy.ndimage.generic_filter将每个元素周围的3x3网格传递给我们选择的函数。此函数选择随机相邻元素。
边界(原始数组之外的值)被设置为nan,我们在函数中过滤掉nan,这样我们只从有效元素中选择。在
结果:
^{pr2}$相关问题 更多 >
编程相关推荐