python - 计算矩阵中每一行的最大值(不包括其自己的列)的更有效方法是什么?
问题描述
对于给定的二维矩阵np.array([[1,3,1],[2,0,5]])
,如果需要计算矩阵中每一行的最大值,不包括其自己的列,并带有预期的示例 return np.array([[3,1,3],[5,5,2]])
,那么最有效的方法是什么?目前我用一个循环来实现它以排除它自己的 col 索引:
n=x.shape[0]
row_max_mat=np.zeros((n,n))
rng=np.arange(n)
for i in rng:
row_max_mat[:,i] = np.amax(s_a_array_sum[:,rng!=i],axis=1)
有更快的方法吗?
解决方案
与您的想法类似(一一排除列),但带有索引:
mask = ~np.eye(cols, dtype=bool)
a[:,np.where(mask)[1]].reshape((a.shape[0], a.shape[1]-1, -1)).max(1)
输出:
array([[3, 1, 3],
[5, 5, 2]])
推荐阅读
- javascript - 当 webpack 处于生产模式时,为什么 babel 将普通函数编译为箭头函数?
- sql - 将具有相同 ID 的行组合成具有更多列的单行
- javascript - 数据表多重过滤功能
- dialogflow-cx - 如何在 Dialogflow CX 中将条件设置为真
- sql - 提高 CTE 的性能
- uml - 用例 扩展和包含
- aws-lambda - AWS Lambda - 死信队列最佳实践的死信队列
- time - SAP HANA Cloud 上的时差计算
- javascript - 如何根据不同的标准进行条件检查
- c# - 有 2 个不同的 IActionResults,一个带参数,一个不带参数