8

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.

1 Answer 1

18

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]])
Sign up to request clarification or add additional context in comments.

2 Comments

Does this copy the data, or does it alter data in place without reserving additional memory?
@Barbarossa: It alters the data in place, although additional memory is required to make the index with data[:, 2] == 3.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.