How to replace values in a numpy array based on another column?

arrays, numpy, python

Solution

You can use Numpy's slicing and indexing to achieve this. Take all the rows where the third column is `3`, and change the second column of each of those rows to `9`:

>>> data[data[:, 2] == 3, 1] = 9
>>> data
array([[1, 9, 3],
       [1, 9, 3],
       [1, 9, 3],
       [4, 5, 6]])

Problem

Let say i have the following: ``` import numpy as np data = np.array([ [1,2,3], [1,2,3], [1,2,3], [4,5,6], ]) ``` How would I go about changing values in column 3 based on values in column 2? For instance, If column 3 == 3, column 2 = 9. ``` [[1,9,3], [1,9,3], [1,9,3], [4,5,6]] ``` I've looked at `np.any()`, but I can't figure out how to alter the array in place.

Original source