1
想将索引列表构建到2维bool_数组中,其中True。Python Numpy 2维数组迭代
import numpy
arr = numpy.zeros((6,6), numpy.bool_)
arr[2,3] = True
arr[5,1] = True
results1 = [[(x,y) for (y,cell) in enumerate(arr[x].flat) if cell] for x in xrange(6)]
results2 = [(x,y) for (y,cell) in enumerate(arr[x].flat) if cell for x in xrange(6)]
结果1:
[[], [], [(2, 3)], [], [], [(5, 1)]]
结果2是完全错误的
目标:
[(2, 3),(5, 1)]
没有办法做到这一点没有事后压扁列表,或者什么更好的办法一般这样做?
哦,亲爱的,没有听说过这一点。 zip(* numpy.where(arr))很好地工作。我会留下一段时间来听取其他人是否有其他选择。 – user1012037
'np.where()'带有一个参数,相当于'np.nonzero()'。转换为OP的格式:'np.transpose(np.nonzero(a))',相当于'np.argwhere(a)'。 – jfs