Мой вопрос похож (расширенная версия) на этот пост: Numpy извлечь строку, столбец и значение из матрицы. В этом посте я извлекаю элементы, которые больше нуля, из входной матрицы, теперь я хочу также извлечь элементы по диагонали. Итак, в этом случае
from numpy import *
import numpy as np
m=np.array([[0,2,4],[4,0,0],[5,4,0]])
dist=[]
index_row=[]
index_col=[]
indices=np.where(matrix>0)
index_col, index_row = indices
dist=matrix[indices]
return index_row, index_col, dist
мы могли бы получить,
index_row = [1 2 0 0 1]
index_col = [0 0 1 2 2]
dist = [2 4 4 5 4]
и теперь это то, что я хочу,
index_row = [0 1 2 0 1 0 1 2]
index_col = [0 0 0 1 1 2 2 2]
dist = [0 2 4 4 0 5 4 0]
Я попытался изменить строку 8 в исходном коде на это,
indices=np.where(matrix>0 & matrix.diagonal)
но получил эту ошибку,
Как получить желаемый результат? Пожалуйста, дайте мне несколько предложений, спасибо!
(matrix>0) & matrix.diagonal
из-за приоритета оператора. - person HYRY   schedule 19.06.2014