我有一个数组,例如 [0, 0, 0, 1, 2, -1, -2, 5, 8, 4, 5.5],想要查找某个元素小于前一个元素的次数(忽略开头的 0 代表缺失数据);在这个例子中,答案是 3(对于 -1、-2 和 4),我必须将其除以有效数字的数量(例如 8)。预期结果是 3/8 = 0.375。
我写了一条指令,想知道是否有更有效的方法来获得它,因为我必须运行它数百万次。
我目前的指示(我不是专家):
v = np.array([0, 0, 0, 1, 2, -1, -2, 5, 8, 4, 5.5])
print(np.sum((v < np.roll(v,1))[1:]) / np.sum(v != 0)) # loss frequency
有什么线索吗?
注意:只要有第一个有效数字(即不同于 0),后面的所有数字(包括 0)都有效。