У меня есть матрица в scipy. И я пытаюсь заменить его на 1, если он удовлетворяет определенному условию, и 0, если это не так.Проверка элементов в матрице в python
for a in range(0,l):
for b in range(0,l):
if Matrix[a][b] == value:
Matrix[a][b] = 1
else:
Matrix[a][b] = 0
В моей матрице полно элементов, имеющих в себе «значение». Тем не менее, это дает мне результат как матрицу, которая полностью равна нулю.
Это сработало раньше по аналогичному сценарию. Может быть, это что-то со структурой матрицы?
Вот как матрица выглядит на first--
[ [0 1. 1. 2.]
[1. 0. 2. 1.]
[1. 2. 0. 1.]
[2. 1. 1. 0.]]
Когда я установить == значение 1. Я получаю все 1 до 1, и все 2 до нуля. Это то, что я хочу.
Но, когда я установил значение == 2. Я получаю все до нуля.
, когда я делаю все, что было предложено.
[[ 0. 1. 1. 2. 1. 2. 2. 3.]
[ 1. 0. 2. 1. 2. 1. 3. 2.]
[ 1. 2. 0. 1. 2. 3. 1. 2.]
[ 2. 1. 1. 0. 3. 2. 2. 1.]
[ 1. 2. 2. 3. 0. 1. 1. 2.]
[ 2. 1. 3. 2. 1. 0. 2. 1.]
[ 2. 3. 1. 2. 1. 2. 0. 1.]
[ 3. 2. 2. 1. 2. 1. 1. 0.]]
>> np.where(matrix==2,1,0)
>> array([[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0]])
Можете ли вы присвоить свою матрицу, чтобы мы могли помочь? –
Какая ценность 'l'? – aIKid
Стандартный протокол отладки: перед сравнением, которое не соответствует вашему мнению, распечатать все. 'print (a, b, repr (Матрица [a] [b]), тип (Матрица [a] [b]), repr (значение), тип (значение))'. Если матрица численная, вы также можете добавить 'print (Matrix [a] [b] -value]'. Вы либо увидите кучу результатов, которые будут полезны, либо вообще ничего не увидите, что скажет вам что-то еще. – DSM