我有一个表格的二维数组:np.zeros((m,n))
。
我的目标是查看前两列,我想找到第一列中发生最多的元素(所以第一列的模式),但是如果第二列是第二列,我不想计算两次同样的。
5x3示例:
[[1 2 x], [1 2 y], [1 3 z], [5 3 w], [5 6 v], [9 2 x], [9 2 y],]
所需的输出,即出现次数:
[1]: 2
[5]: 2
[9]: 1
所以在某种程度上它是一个计数器函数,但是以第二个数组为条件(第2列)。
我对Python比较陌生,是否有一个可以直接且有效地执行此操作的函数?我需要在非常大的矩阵上运行它,但是找不到这样的函数。
答案 0 :(得分:2)
这个功能解决了你的问题。
def count_special(arr):
counter = {}
for i in np.unique(arr[:,0]):
sec = arr[arr[:,0]==i,1]
counter[i] = len(np.unique(sec))
return counter
,对于您的输入,返回:
arr = np.array([[1,2,0],[1,2,4],[1,3,4],[5,3,1],[5,6,0]])
print(count_special(arr))
- > {1:2,5:2}