将最高值更改为最低值

2024-05-26 19:55:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个对角线上有零的矩阵,最高的值是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

Tags: 答案dataframesizelennp矩阵randommatrix
1条回答
网友
1楼 · 发布于 2024-05-26 19:55:16

matrix中减去最大值:

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

现在,用零填充对角线:

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

或者,使用@AChampion在注释中建议的np.fill_diagonal

np.fill_diagonal(matrix.values, 0)

相关问题 更多 >

    热门问题