[英]Count elements satisfying a condition of two rows
data
A B
1 1
5 1
3 6
5 3
3 1
如何应用函数式编程来计算 A[i]>A[i-1] 和 B[i]==B[i-1] 的行数
以及如何打印这些行?
它们是不同的任务。 我知道我们可以先解决第二个任务,然后解决任务 1。但是我很好奇没有 for/any_other 循环的不同解决方案。
可以使用的数据结构:Numpy、Pandas、列表列表。
在numpy
您需要找到差异,然后比较新数组的值:
x = pd.DataFrame(data).values
diff = np.diff(x, axis=0)
mask = np.logical_and(diff[:,0]>0, diff[:,1]==0)
>>> mask
array([ True, False, False, False])
您现在可以解决这两个问题:
计算A[i]>A[i-1]
和B[i]==B[i-1]
:
>>> np.sum(mask) 1
打印这些行:
>>> x[np.r_[False, mask]] array([[5, 1]])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.