计算数组中特定行元素组合的数量

时间:2017-03-24 10:40:21

标签: python arrays numpy

我想查找某个行元素组合在数组中出现的次数。我试图使用numpy.where命令,但我无法让它工作。举个例子:

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

我想现在第一行中'a'和第三行中'b'的组合出现了多少时间(注意'a'和'b'的组合与组合'b'不同和'a')。不要介意第二列中的数字,这些是我稍后在代码中使用的其他信息。 在上面给出的例子中,操作的结果应该是3。我正在尝试寻找一种快速的方法,因为这个定义将在我的代码中多次使用(因此多个for循环的组合将花费太长时间)

1 个答案:

答案 0 :(得分: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')