2016-08-16 1 views
1

に異なる統計を計算し、それは、その形状が(729,816)あるが<code>label1</code>と呼ば<code>nd.array</code>が存在する多次元numpyのアレイ

[[0 0 0 ..., 0 0 0] 
[0 0 0 ..., 0 88 0] 
[0 0 0 ..., 0 0 0] 
..., 
[0 0 1 ..., 0 0 0] 
[0 0 0 ..., 0 2 0] 
[0 0 0 ..., 0 0 0]] 

を有しています。この配列にいくつのユニークな値があるか知る方法はありますか? print(np.where(label1==label1.max()))を実行すると、結果は(array([ 0, 0, 0, ..., 234, 234, 234]), array([450, 451, 452, ..., 433, 434, 435]))のようになります。つまり、2つの配列(または2行)に最大値がありますか?

答えて

0
  1. アレイ内でソートされた一意の値を取得するには、numpy.unique(label1)を実行します。
  2. 2次元配列で呼び出された場合、numpy.whereは、一致するすべてのエントリの行と列の座標である2つの配列を返します。だから、もしそれが1試合は0行で発見されたことを意味しnumpy.where戻り(array([0]), array([1]))、列1

EDIT:あなたが抽出して行を印刷したいと列がnumpy.whereから座標た場合、あなたは次のようにそれを行うことができますこれは:

rows, cols = np.where(label1==label1.max()) 
for row, col in zip(rows, cols): 
    print row, col 
+0

答えていただきありがとうございます。与えられた例に関しては、一致が(行0、列450)、(行0、列451)などで見つかることを意味しますか?print関数はそれらの長い配列をリストすることはできません。これらの位置をすべて(列の列)の組み合わせでプリントアウトまたは抽出する方法はありますか? – user785099

+0

はい、そうです。これらの座標にアクセスするために必要なすべての情報があります。私の投稿への編集を参照してください。 – bpachev

関連する問題