numpy每行修改指定的值

  • 本文关键字:修改 numpy python
  • 更新时间 :
  • 英文 :


我不想使用循环来实现这一点,想知道是否有一个numpy方法。

我想将每一行的最小值或最大值修改为指定值

假设改成-1

我不想使用'for'循环,因为有数百万行

arr = np.array([[1, 2, 3],
[6, 5, 4],
[7, 8, 9],
[15, 12, 43],
[2, 2, 2],
[2, 2, 1],
[1, 2, 1],
])
min_arr = np.min(arr, axis=1) # [ 1  4  7 12  2  1  1]

# result
[[-1  2  3]
[ 6  5 -1]
[-1  8  9]
[15 -1 43]
[-1 -1 -1]
[ 2  2 -1]
[-1  2 -1]]

使用numpyargmin()查找索引:

然后用numpyput_along_axis()更新val(-1)的值

val = -1
arr_mins = np.expand_dims(np.argmin(arr, axis=1), axis=1)
np.put_along_axis(arr, arr_mins , val , axis=1)

如果您只想替换每行中第一次出现的最小值,则上面的代码可以工作。

如果要替换每行中多次出现的最小值,请执行以下操作:

arr_mins = np.argwhere(arr == np.expand_dims(np.min(arr, axis=1),axis=1))
rows = a [:,0]
cols = a [:,1]
arr[rows, cols] = -1

来源:

如何制作numpy。Argmax返回所有出现的最大值?

获取所有等于max的列索引并使用它们索引另一个数组:numpy vs sparse csr_matrix

最新更新