2016-10-31 38 views
1

私は8 * 720のmeanRSSという配列を持っており、各列の最小値を見て、その列の他の要素からその値を減算したいと考えています。私はこれをすべての列にしたい。8 * 720配列の各列の最小値を見つける?

meanRSS.shape =(8720)

minInds = meanRSS.argsort()

私はこの後に続行するのか分かりません。私はPythonの初心者です。

Out[13]: 
array([[5, 2, 1], 
    [6, 4, 3], 
    [1, 6, 8], 
    [8, 5, 4]]) 
In [14]: minInds = a.argsort() 
In [15]: minInds 
Out[15]: 
array([[2, 1, 0], 
    [2, 1, 0], 
    [0, 1, 2], 
    [2, 1, 0]]) 

しかし、私はそれが行ではなく列に沿ってソートしたいと思います。

あなたが列最小値のベクトルを見つけるために axis = 0を使用してアレイ上 min()メソッドを使用して、あなたの元の配列からそれを引くことができます

答えて

2

arr - arr.min(axis = 0) 

#array([[4, 0, 0], 
#  [5, 2, 2], 
#  [0, 4, 7], 
#  [7, 3, 3]]) 
+0

ありがとうございます。しかし、このライン私の8 * 720の配列のために働くか、私はそれのすべての列のためにこれを計算するためにforループを使用する必要がありますか? – JUBER

+0

次元がどんなものであろうとも、2D配列(行列)で動作するはずです。 – Psidom

0

あなたも減算、行列を転置ような何かを試すことができます列内のすべてのより大きな値からの最小値と後ろへの転置。たとえば

>>> transpose = lambda matrix: list(map(list, zip(*matrix))) 
>>> col_min_min = lambda col: [(val-min(col) if val !=min(col) else val) for val in col] 
>>> 
>>> a = [[1, 2, 3], [2, 3, 4], [3, 4, 5]] 
>>> result = transpose([col_min_min(col) for col in transpose(a)]) 
>>> print result 
[[1, 2, 3], [1, 1, 1], [2, 2, 2]] 
関連する問題