python - 计算矩阵中每行的最大值(不包括其自己的列)的更有效方法是什么?

标签 python numpy

对于给定的二维矩阵 np.array([[1,3,1],[2,0,5]])如果需要计算矩阵中每行的最大值(不包括其自己的列),则预期示例返回 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]])

关于python - 计算矩阵中每行的最大值(不包括其自己的列)的更有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61530669/

相关文章:

python - 如何在 Python 中使用 imagemagick?

python - 在 tkinter GUI 中更新 matplotlib 图

python - 如何导入标准库模块而不是本地目录?

python - 在 sympy 中使用 'exp' 时出错 -TypeError 并显示属性错误

python - imshow assertion failed drawChessboardCorner() of opencv 在 Python 中不返回任何内容

Python 服务/守护进程

python - 为什么我不应该将 virtualenv 推送到 Heroku?

python - 在 Cython 中更快地计算平方范数

python - 如何随后聚合 pandas 中时间序列的值

python - Raspberry Pi OpenCV : src is not a numpy array, 既不是标量