2012-06-11 70 views
2

我想用-1替換2D numpy的陣列的每列的最大值:蟒蛇代替值在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 

是否有任何其他的方式來替代最大值,其位置給出由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 ......或者一步到位'B [np.argmax(B,軸= 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