我有一个用整数填充的二维numpy数组[-1,0,+1]。我需要从中选择一个不为零的随机元素,并计算其相邻元素的和。
有没有办法得到anumpy.random.choice
的索引?
lattice=np.zeros(9,dtype=numpy.int)
lattice[:2]=-1
lattice[2:4]=1
random.shuffle(lattice)
lattice=lattice.reshape((3,3))
random.choice(lattice[lattice!=0])
这给出了从正确的样本中提取的结果,但我需要选择的索引才能识别其相邻元素。我的另一个想法是从索引中取样,然后检查元素是否为非零,但是当有很多零时,这显然是非常浪费的。
最佳答案
您可以使用lattice.nonzero()
来获取非零元素[nonzero docs]的位置:
>>> lnz = lattice.nonzero()
>>> lnz
(array([0, 0, 1, 1]), array([1, 2, 0, 1]))
它返回与非零元素的坐标相对应的数组元组。然后绘制索引:
>>> np.random.randint(0, len(lnz[0]))
3
用它来决定你感兴趣的坐标。
关于python - 来自numpy数组的随机选择的索引,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22440102/