首页 > 解决方案 > 用最大值替换矩阵元素以对称矩阵

问题描述

我有一个矩阵。我想通过应用以下条件来替换矩阵的某些元素:如果Xij>Xji或反之亦然,将最小值替换为最大值。例如:

Input_array = [[1, 5, 3],
               [1, 10, 2],
               [0, 9, 16]]

我希望通过根据上述条件替换矩阵元素来将输出作为对称数组。

Output_array =  [[1,5,3],
                 [5,10,9],
                 [3,9,16]]

注意,为了使矩阵对称我不想做numpy.dot(matrix,matrixT)

标签: pythonnumpymatrix

解决方案


import numpy as np
arr = np.array([[1, 5, 3],[1, 10, 2],[0, 9, 16]])
arr_sym = np.where(arr > arr.T, arr, arr.T)
print(f'arr_sym = \n{arr_sym}')

输出:

arr_sym = 
[[ 1  5  3]
 [ 5 10  9]
 [ 3  9 16]]

推荐阅读