Не обращая внимания на среднее значение, если в питоне данные содержат ноль
Я пытаюсь создать функцию для расчета скользящего среднего по набору данных. Это функция:
def averaged_rel_track(navg, rel_values, nb, zeroindex):
#function to average the relative track values for each blade. This is
#dependant on the number values specified by the user to average over in a
#rolling average
for blade in range(0,int(nb)):
av_values=[]
rel_blade=rel_values[:,blade]
for rev in range(0,len(rel_blade)):
section=rel_blade[rev-int(navg)+1:rev]
av_value=np.mean(section)
av_values.append(av_value)
print av_values
Однако я хотел бы добавить проверку к нему, и я изо всех сил пытаюсь найти лучший способ реализовать это... Если число средних (navg
) в скользящей средней, скажем, 24, берется среднее из 23 значений перед указанным элементом и элементом. Однако, если одно из этих 24 значений равно нулю, я хочу, чтобы среднее значение для указанного элемента было равно нулю. Я старался:
def averaged_rel_track(navg, rel_values, nb, zeroindex):
#function to average the relative track values for each blade. This is
#dependant on the number values specified by the user to average over in a
#rolling average
for blade in range(0,int(nb)):
av_values=[]
rel_blade=rel_values[:,blade]
for rev in range(0,len(rel_blade)):
section=rel_blade[rev-int(navg)+1:rev]
av_value=np.mean(section)
zero_test= np.where(np.any(section==0))
print zero_test
if len(zero_test)==0:
av_value=None
av_values.append(av_value)
print av_values
Однако длина zero_test всегда равна 1?
Кто-нибудь может придумать способ исправить этот метод или вообще другой метод?
ура
1 ответ
После комментария @Mr E я решил это, заменив zero_test
с просто np.any(section==0)
, Это гораздо более простой способ сделать это.