
python编程中,如何计算一个数值序列中连续的正值或连续的负值的个数,代码如下:
import numpy as np
data = pd.Series([-1, 12, 10, 3, 28, 5, 13, 0, 5,7, -4, -7, -5, 3, -9, -7, -16, -27, -2, 15, 27, -8])
def pos_neg_count(a):
value = a.ge(0).ne(a.ge(0).shift()).cumsum()
#print(value.to_list())
vals = value.groupby(v).count().values
initial_vals = vals
print(vals)
cols = ['pos', 'neg'] if a[0] >= 0 else ['neg', 'pos']
#pos 存放正值的个数,neg 存放负值的个数
try:
result = pd.DataFrame(vals.reshape(-1, 2), columns=cols)
except ValueError:
vals = np.insert(vals, len(vals), 0)
result = pd.DataFrame(vals.reshape(-1, 2), columns=cols)
return result, initial_vals,vals
result_posneg = pos_neg_count(data)
print(result_posneg[0])
print(result_posneg[1])
print(result_posneg[2])
输出结果如下:
[1 9 3 1 5 2 1]
neg pos
0 1 9
1 3 1
2 5 2
3 1 0
[1 9 3 1 5 2 1]
[1 9 3 1 5 2 1 0]
结果说明,在数字序列data中有7段连续的正值或负值数据,第1段为1个负值,第2段为9个正值,第3段为3个负值,第4段为1个正值,第5段为5个负值,第6段为2个正值,第7段为1个负值。函数中创建一个dataframe,用两列存放计算结果,每一行包括连续负值的个数和连续负值的个数,行顺序即一对数正负连续个数的顺序。
发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/76362
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!