Python Numpy 2d数组,将每行的每个索引剪切到该索引和特定列的最小值

Python Numpy 2d数组,将每行的每个索引剪切到该索引和特定列的最小值,python,numpy,Python,Numpy,给定一个2d数组,我想获取该数组的特定列 然后我想获取数组中每一行的每个值,并将该值更改为其当前值和该行指定列中的值之间的最小值 做这件事的有效方法是什么?多谢各位 以下是一个例子: 给定3x3矩阵: array([[1, 2, 1], [2, 2, 8], [3, 7, 11]]) 所选列=第2列 array([2, 2, 7]) 对于矩阵中的每个值,我取该值与所选列对应行中的值之间的最小值 = [1, 2, 1; 2, 2, 2; 3, 7, 7] 如何有效

给定一个2d数组,我想获取该数组的特定列

然后我想获取数组中每一行的每个值,并将该值更改为其当前值和该行指定列中的值之间的最小值

做这件事的有效方法是什么?多谢各位

以下是一个例子:

给定3x3矩阵:

array([[1, 2, 1],
       [2, 2, 8],
       [3, 7, 11]])
所选列=第2列

array([2, 2, 7])
对于矩阵中的每个值,我取该值与所选列对应行中的值之间的最小值

= [1, 2, 1; 2, 2, 2; 3, 7, 7]

如何有效地为大型矩阵执行此操作?谢谢。

使用
numpy.minimum
。您需要广播以保持列的维度,这样就不会将行与整个列进行比较

np.minimum(a, a[:, col, None])

MCVE


请共享示例数组和预期输出使用
np.minimum(a,a[:,col,None])
,其中
col
是比较列的索引我不确定我做了什么。。。我不知怎么编辑了我的原始矩阵。你说得对,发布的内容毫无意义。但无论如何,你完全回答了我的问题,你能把它作为一个答案,这样我就可以相信你的回答了吗?非常感谢。
a = np.array([[1, 3, 1, 9, 4],
              [2, 3, 7, 5, 5],
              [9, 8, 8, 4, 5],
              [6, 9, 5, 7, 9],
              [9, 9, 1, 9, 1]])

col = 2       # array([1, 7, 8, 5, 1])

np.minimum(a, a[:, col, None])
array([[1, 1, 1, 1, 1],
       [2, 3, 7, 5, 5],
       [8, 8, 8, 4, 5],
       [5, 5, 5, 5, 5],
       [1, 1, 1, 1, 1]])