计算python数组

时间:2016-05-13 14:07:21

标签: python arrays numpy

简单的问题,但我似乎无法让它工作。 我有一个形状的数组(2000,1)。从这个数组我想计算每40行99个百分位数并返回一个相同长度的布尔数组,其中第99百分位数以上的所有数据都为真,其余部分为假。 我可以做的前40个:

a = np.random.rand(2000,1)
maxper40 = a[0:40] > np.percentile(a[0:40], 99)

我可以做这样的事情来获得移动的窗口:

windowSize = 40
for i in range(0,len(a)-windowSize+1):
    print max(a[i:i+windowSize])

如何以40的间隔移动数组,计算每个间隔99个百分点并返回与输入长度相同的布尔数组?

非常感谢!

1 个答案:

答案 0 :(得分:2)

您可以将阵列重塑50x40并获得每个阵列的百分位数:

a.reshape(50, 40) > np.percentile(a.reshape(50, 40), 99, axis=0)

这将返回一个大小(50,40)的数组。如果你想要1D阵列,你可以在之后调用flatten:

(a.reshape(50, 40) > np.percentile(a.reshape(50, 40), 99, axis=0)).flatten()