我有一个gaussian_kde.resample数组。我不知道这是否是一个numpy数组,以便可以使用numpy函数。

我有3000个变量的数据0<x<=0.5,我使用了

kde = scipy.stats.gaussian_kde(x) # can also mention bandwidth here (x,bandwidth)
sample = kde.resample(100000) # returns 100,000 values that follow the prob distribution of "x"


这给了我一个遵循"x"概率分布的数据样本。但是问题是,无论我尝试选择什么带宽,我的"sample"都将得到很少的负值。 I only want values within the range 0 < sample <= 0.5

我试着做:

 sample = np.array(sample) # to convert this to a numpy array
 keep = 0<sample<=0.5
 sample = sample[keep] # using the binary conditions


但这行不通!如何删除数组中的负值?

最佳答案

首先,kde.resample的返回值是一个numpy数组,因此您无需重新转换它。

问题出在行中(编辑:不,不行。这应该起作用!)

keep = 0 < sample <= 0.5


它没有做您想的。尝试:

keep = (0 < sample) * (sample <= 0.5)

关于python - 从gaussian_kde_resample数组获取范围内的数字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24214076/

10-16 12:02