Python Numpy 2d数组,将每行的每个索引剪切到该索引和特定列的最小值
给定一个2d数组,我想获取该数组的特定列 然后我想获取数组中每一行的每个值,并将该值更改为其当前值和该行指定列中的值之间的最小值 做这件事的有效方法是什么?多谢各位 以下是一个例子: 给定3x3矩阵: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] 如何有效
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]])