Изменить самые высокие значения на самые низкие значения python - PullRequest
0 голосов
/ 13 января 2019

У меня есть матрица с нулями в диагонали и наибольшее значение, например, 20 и самое низкое 1, я хочу теперь изменить 20 на 1, 19 на 2, а также наоборот, с 1 на 20, от 2 до 19. Диагональ все равно должна оставаться нулевой или принимать значение infinte. В настоящее время я просто знаю, как их масштабировать, но нет. Если этот вопрос дублирует, пожалуйста, направьте меня, я не смог найти ответ.

matrix=pd.DataFrame(np.random.randint(0,20,size=(4, 4)), 
columns=list('ABCD'))
matrix.values[[np.arange(len(matrix))]*2]=0
#this is just scaling down, which Idont want
revisedmatrix=(1./(matrix+1))
revised.values[[np.arange(len(revised))]*2]=0

1 Ответ

0 голосов
/ 13 января 2019

Вычтите максимальное значение из matrix:

matrix = matrix.values.max() + 1 - matrix

Теперь заполните диагональ нулями:

matrix.values[(np.arange(len(matrix)),) * 2] = 0

Или, используя np.fill_diagonal, как предложено @AChampion в комментариях:

np.fill_diagonal(matrix.values, 0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...