我有一个稀疏的二维矩阵,通常是这样的:

test
array([[ 1.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.],
       [ 0.,  2.,  1.,  0.],
       [ 0.,  0.,  0.,  1.]])

我对“测试”中的所有非零元素都感兴趣
index = numpy.nonzero(test)返回数组的元组,为非零元素提供索引:
index
(array([0, 2, 2, 3]), array([0, 1, 2, 3]))

对于每一行,我想打印出所有非零元素,但跳过所有只包含零元素的行。
我希望你能给我一些提示。
谢谢你的提示。这解决了问题:
>>> test
array([[ 1.,  0.,  0.,  0.],
[ 0.,  0.,  0.,  0.],
[ 0.,  2.,  1.,  0.],
[ 0.,  0.,  0.,  1.]])

>>> transp=np.transpose(np.nonzero(test))
>>> transp
array([[0, 0],
   [2, 1],
   [2, 2],
   [3, 3]])

>>> for index in range(len(transp)):
row,col = transp[index]
print 'Row index ',row,'Col index ',col,' value : ', test[row,col]

给我:
  Row index  0 Col index  0  value :  1.0
  Row index  2 Col index  1  value :  2.0
  Row index  2 Col index  2  value :  1.0
  Row index  3 Col index  3  value :  1.0

最佳答案

鉴于

rows, cols = np.nonzero(test)

你也可以使用所谓的advanced integer indexing
test[rows, cols]

例如,
test = np.array([[ 1.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.],
       [ 0.,  2.,  1.,  0.],
       [ 0.,  0.,  0.,  1.]])

rows, cols = np.nonzero(test)

print(test[rows, cols])

产量
array([ 1.,  2.,  1.,  1.])

10-04 17:07