python中是否有一种简单的方法来检查不同行中的重复项数量。例如:
Row1: 12 13 20 25 45 46
Row2: 14 24 30 38 39 47
Row3: 1 9 15 21 29 39
Row4: 2 6 14 19 26 45
Row5: 5 23 25 27 32 40
Row6: 6 8 25 26 27 45
我想将Row6与先前的“ n”行进行比较。
如果n = 5,则输出应该是这样的:[2 0 0 3 2]
当然,我可以将Row6中的每个值与循环中其他行的每个值进行比较,并为每行增加计数器。
但是您知道python中已经存在的任何功能吗?
答案 0 :(得分:1)
如果您正在使用numpy数组,请使用广播比较,
>>> n = 5
>>> v = df.values
>>> v
array([[12, 13, 20, 25, 45, 46],
[14, 24, 30, 38, 39, 47],
[ 1, 9, 15, 21, 29, 39],
[ 2, 6, 14, 19, 26, 45],
[ 5, 23, 25, 27, 32, 40],
[ 6, 8, 25, 26, 27, 45]])
>>> (v[None, -(n+1):-1, None] == v[-1, :, None]).sum(-1).sum(-1).squeeze()
array([2, 0, 0, 3, 2])
答案 1 :(得分:0)
您可以使用numpy中的unique
>>> import numpy as np
>>> np.unique([1, 1, 2, 2, 3, 3])
array([1, 2, 3])
>>> a = np.array([[1, 1], [2, 3]])
>>> np.unique(a)
array([1, 2, 3])
您仍然需要遍历n行,然后检查结果数组的长度。 也许您仍然使用numpy找到了更合适的东西。