1. मैं किसी अन्य सरणी के वर्तमान मान के आधार पर किसी सरणी की विंडो के लिए मान सेट करने का प्रयास कर रहा हूं।
  2. इसे उन मानों को अनदेखा करना चाहिए जो विंडो ओवरराइड करता है।
  3. मुझे अलग-अलग रनों के लिए खिड़की के आकार को बदलने में सक्षम होना चाहिए।

यह काम करता है लेकिन यह बहुत धीमा है। मैंने सोचा कि कहीं न कहीं एक वेक्टरकृत समाधान होगा।

window_size=3

def signal(self):
    signal = pd.Series(data=0, index=arr.index)
    i = 0
    while i < len(self.arr) - 1: 
        s = self.arr.iloc[i]
        if s in [-1, 1]:
            j = i + window_size
            signal.iloc[i: j] = s
            i = i + window_size
        else:
            i += 1
    return signal

arr    = [0 0 0 0 1 0 0 0 0 0 0 -1 -1  0 0 0 0 ]

signal = [0 0 0 0 1 1 1 0 0 0 0 -1 -1 -1 0 0 0 ]
0
idfeld 9 सितंबर 2019, 17:45

1 उत्तर

सबसे बढ़िया उत्तर

आप pd.Series के shift फ़ंक्शन का उपयोग कर सकते हैं

arr_series = pd.Series(arr)

arr_series + arr_series.shift(periods=1, fill_value=0) + arr_series.shift(periods=2, fill_value=0)
0
stahamtan 10 सितंबर 2019, 14:42