2

I want to replace the max values of each column of a 2d numpy array with -1:

b = numpy.array([[1,2,3,4],[5,6,7,8], [9,10,11,12]])
#get the max value of each column
maxposcol = b.argmax(axis = 0)
maxvalcol = b.max(axis = 0)
#replace max values with -1 
for i in numpy.arange(b.shape[1]):
    b[maxposcol[i]][i] = -1

Is there any other way to replace the max values whose positions are given by maxposcol[i]?

If I want to find the n maximal values of each column of my matrix what would you advise me to do? Using a sort? Repeating iteratively the search of max value and replace them at each step?

1 Answer 1

3

You can do it like this:

>>> a=np.argmax(b, axis=0)
>>> b[a] = -1
>>> b
array([[ 1,  2,  3,  4],
       [ 5,  6,  7,  8],
       [-1, -1, -1, -1]])
Sign up to request clarification or add additional context in comments.

2 Comments

Thank you, What do you suggest to find the n maximal values of each column?
@lizzie - [this link should help you ](stackoverflow.com/questions/6910641/…), also if you're not aware of: b[b>6]=-1 it may be of use to you :)

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.