Python 对于值1或-1,Numpy.nonzero的行为异常
我对numpy.nonzero()有一个非常奇怪的问题。对于不是1或-1的值,它表现良好,但对于这两个值,它似乎会产生奇怪的结果 比如说,Python 对于值1或-1,Numpy.nonzero的行为异常,python,python-2.7,numpy,Python,Python 2.7,Numpy,我对numpy.nonzero()有一个非常奇怪的问题。对于不是1或-1的值,它表现良好,但对于这两个值,它似乎会产生奇怪的结果 比如说, goalmat = np.matrix( [[2, 0, 1], [-1, 0, -1]]) 制造 现在,使用numpy.nonzero(goalmat==x)只能部分起作用: >>> np.nonzero(goalmat == 1) (matrix([[0]]), matrix([[2]])) >>> np.nonze
goalmat = np.matrix( [[2, 0, 1], [-1, 0, -1]])
制造
现在,使用numpy.nonzero(goalmat==x)只能部分起作用:
>>> np.nonzero(goalmat == 1)
(matrix([[0]]), matrix([[2]]))
>>> np.nonzero(goalmat == -1)
(matrix([[1, 1]]), matrix([[0, 2]]))
及
因此,如果我要求-1,它似乎给出了1的正确位置
我是否误用/误解了numpy.nonzero()?它确实工作正常,您实际上没有使用值为-1的
nonzero()
,而是将True和False作为语句goalmat==-1
的输出。
您可以通过以下方式检查非零()
>>> index1, index2 = np.nonzero(goalmat == -1)
>>> goalmat[index1, index2]
matrix([[-1, -1]])
对我来说,这似乎是正确的输出。。。对于每个真实位置,都有轴0的索引矩阵和轴1的索引矩阵。你是对的>\uuuuuu<我将编辑我的问题,必须找到正确的数据。对不起,我刚刚从shell中进行了错误的测试,你完全正确。我用真正奇怪的结果解决了这个问题,至少我觉得它们很奇怪:)哦,天哪,好吧,我明白了。所以(矩阵([[1,1]]),矩阵([[0,2]])不是指[1,1]和[0,2],而是指[1,0]和[1,2],对吗?嗯,好吧,我只是误读了输出,弄糊涂了。谢谢文档显示,使用转置产生您期望的对,`np.transpose(np.nonzero(x))`
>>> goalmat = np.matrix( [[2, 2, 1], [-1, 1, -1]])
>>> goalmat
matrix([[ 2, 2, 1],
[-1, 1, -1]])
>>> np.nonzero(goalmat == 1)
(matrix([[0, 1]]), matrix([[2, 1]]))
>>> np.nonzero(goalmat == -1)
(matrix([[1, 1]]), matrix([[0, 2]]))
>>> index1, index2 = np.nonzero(goalmat == -1)
>>> goalmat[index1, index2]
matrix([[-1, -1]])