2017-03-24 6 views
0

配列内で行要素の特定の組み合わせが何回発生したかを調べたいと思います。 numpy.whereコマンドを使用しようとしましたが、動作させることができません。例として:配列内の特定の行要素の組み合わせの数をカウントします。

array([['a', '2', 'b'], 
      ['c', '4', 'a'], 
      ['b', '2', 'c'], 
      ['a', '5', 'b'], 
      ['b', '7', 'a'], 
      ['a', '3', 'b']], 
    dtype='|S1') 

Iは、3行目の最初の行と「B」は発生中の組み合わせは、「」(注意どのように多くの時間が今することを「A」と「B」の組み合わせ'b'と 'a'の組み合わせとは異なります)。 2列目の数字は気にしないでください。これは後で私のコードで使用する追加情報です。 上記の例では、操作の結果は3でなければなりません。この定義は自分のコードで何度も使用されるので、私は速い方法を探しています(複数のforループの組み合わせが長すぎるだけです)

答えて

0

あなたの行列が変数arrに含まれていれば:

import numpy as np 

arr = arr.astype('U') 

arr[np.logical_and(arr[:,0]=='a', arr[:,2]=='b')] 
#array([['a', '2', 'b'], 
#  ['a', '5', 'b'], 
#  ['a', '3', 'b']], 
#  dtype='<U1') 
+0

ありがとうございました!これはまさに私が探していたものです。 –

+0

話題を閉じるには、どうぞお気軽に。 –

関連する問題