2012-06-11 4 views
2

Я хочу, чтобы заменить максимальные значения каждого столбца 2d Numpy массива с -1:питона заменить значения в 2d Numpy массива

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 

Есть ли другой способ заменить максимальные значения, положение которых дается by maxposcol [i]?

Если я хочу найти n максимальных значений для каждого столбца моей матрицы, что бы вы посоветовали мне сделать? Использовать сортировку? Повторяя итеративно поиск максимального значения и заменяя их на каждом шаге?

ответ

3

Вы можете сделать это следующим образом:

>>> a=np.argmax(b, axis=0) 
>>> b[a] = -1 
>>> b 
array([[ 1, 2, 3, 4], 
     [ 5, 6, 7, 8], 
     [-1, -1, -1, -1]]) 
+1

+ 1 ... или в одном шаге 'б [np.argmax (Ь, ось = 0)] = -1' – eumiro

+0

Спасибо, Что вы предлагаете найти n максимальных значений для каждого столбца? – lizzie

+0

@lizzie - [эта ссылка должна помочь вам] (http://stackoverflow.com/questions/6910641/how-to-get-the-n-maximum-values-in-a-numpy-array), также если вы «Не знаю:' b [b> 6] = - 1' это может пригодиться вам :) – fraxel

Смежные вопросы