【发布时间】:2020-12-06 19:25:20
【问题描述】:
我一直在寻找一个练习的答案。 这个练习给了我们一个数字在 -1 和 1 之间的数组。 我们被要求计算信号阵列改变符号的次数。 例如:你有这个数组: [0.7,0.5,0.6,-0.1,0.9,0.6,0.4,-0.2,-0.3,0.2,0.3,-0.3,-0.9,-0.7,0.1,0.2] 它改变标志7次 这是我编写的代码,它应该得到它改变标志的次数的“计数”。 由于某种原因,它不起作用,最后的计数等于 0,它应该是 7。 你能帮我吗 ? 非常感谢。
--代码--
import numpy as np
def zeroCrossing(signal):
j=0
ls=len(signal)
print(ls)
count=0
x=0
y=0
for j in range(0,ls):
if signal[j]>0 and x==1:
j=j+1
y=0
elif signal[j]>0 and x==0:
count==count+1
x=1
j=j+1
elif signal[j]<0 and y==1:
j=j+1
x=0
elif signal[j]<0 and y==0:
count==count+1
y=1
j=j+1
return count
print(zeroCrossing(np.array([0.7,0.5,0.6,-0.1,0.9,0.6,0.4,-0.2,-0.3,0.2,0.3,-0.3,-0.9,-0.7,0.1,0.2])))
【问题讨论】:
-
看来你把初始数字算作符号的“变化”?
-
用你自己的话来说,你希望
count==count+1做什么? -
答案肯定是 6,而不是 7?
-
arr = np.array([0.7,0.5,0.6,-0.1,0.9,0.6,0.4,-0.2,-0.3,0.2,0.3,-0.3,-0.9,-0.7,0.1,0.2]); print(sum(np.where(np.sign(arr) != np.sign(np.roll(arr, -1)), 1, 0)))会这样做,但我不知道 7 来自哪里 -
这能回答你的问题吗? Python - counting sign changes
标签: python arrays numpy count return-value