python - 用最大值替换矩阵元素以对称矩阵
问题描述
我有一个矩阵。我想通过应用以下条件来替换矩阵的某些元素:如果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)
解决方案
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]]
推荐阅读
- java - Quarkus Panache OneToMany 关系未保存在数据库中
- c# - 使用继承的构建器模式
- python - 将一些独立应用程序集成到 Web 环境中的最佳理论上的方法是什么?
- ruby-on-rails - 在 ruby 中添加到 id 的数据库列表中
- azure - 是否可以在 azcopy 中使用正则表达式?
- macos - 如果此系统没有任何打印机,如何在 Mac 上使用 QPageSetupDialog?
- java - 修改值后键值对的颠簸转换规范
- python - 我如何在python中创建检查列表是否为向量的函数
- python - 如何根据python中最近的时间戳左连接两个长度不同的数据帧并且不丢失任何行?
- mybatis - Java从Oracle获取(日期和时间),有的小于1小时,有的正常