No, there is no built-in weighted function in numpy for anything, but you can always put something together, try this:
def weight_array(ar, weights):
zipped = zip(ar, weights)
weighted = []
for i in zipped:
for j in range(i[1]):
weighted.append(i[0])
return weighted
np.percentile(weight_array(ar, weights), 25)