Ben numpy
array
(veya pandas
DataFrame
), en az window_size
uzunluğu ile aynı değerin sadece sürekli dizi tutulan bir şekilde ve her şey kümeye filtre etmek istiyorum 4Filtreleme pandalar veya minimum pencere uzunluğunda sürekli serisi için numpy diziler
[0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1]
bir pencere boyutu kullanıldığında
[1,1,1,0,0,1,1,1,1,0,0,1,0,0,0,1,1,1,0,1,1,1,1]
olmalıdır: Örneğin 0.
için 0
ve scipy.ndimage.filtes.gerneric_filter
kullanmayı denedim, ancak haddeleme çekirdek işlevlerinin doğası nedeniyle burada doğru yaklaşım olduğunu düşünmüyorum (ve şu anda onunla takılıyorum).
Burada yine benim girişimi eklemek şöyledir:
import numpy as np
import pandas as pd
import scipy
#from scipy import ndimage
df= pd.DataFrame({'x':np.array([1,1,1,0,0,1,1,1,1,0,0,1,0,0,0,1,1,1,0,1,1,1,1])})
df_alt = df.copy()
def filter_df(df, colname, window_size):
rolling_func = lambda z: z.sum() >= window_size
df[colname] = pd.rolling_apply(df[colname],
window_size,
rolling_func,
min_periods=window_size/2,
center = True)
def filter_alt(df, colname, window_size):
rolling_func = lambda z: z.sum() >= window_size
return scipy.ndimage.filters.generic_filter(df[colname].values,
rolling_func,
size = window_size,
origin = 0)
window_size = 4
filter_df(df, 'x', window_size)
print df
filter_alt(df_alt, 'x', window_size)
Onların tanımları aşağıda listelenmiştir? Değerler her zaman aynı mı yoksa aynı dizi için farklı mıdır? – Stefan
Bunları da 1 dizisi olarak tutmak istiyorum. Gibi: [1,1,1,1,1] -> [1,1,1,1,1] – pho