如何根据另一列替换numpy数组中的值?

Bar*_*ssa 8 python arrays numpy

假设我有以下内容:

import numpy as np

data = np.array([
     [1,2,3],
     [1,2,3],
     [1,2,3],
     [4,5,6],         
     ])
Run Code Online (Sandbox Code Playgroud)

我如何根据第2列中的值更改第3列中的值?例如,如果第3列== 3,则第2列= 9.

[[1,9,3],
 [1,9,3],
 [1,9,3],
 [4,5,6]]
Run Code Online (Sandbox Code Playgroud)

我看过了np.any(),但我无法弄清楚如何改变阵列.

mdm*_*dml 17

您可以使用Numpy的切片和索引来实现此目的.获取第三列所在的所有行3,并将每个行的第二列更改为9:

>>> data[data[:, 2] == 3, 1] = 9
>>> data
array([[1, 9, 3],
       [1, 9, 3],
       [1, 9, 3],
       [4, 5, 6]])
Run Code Online (Sandbox Code Playgroud)