def top_n_percent(array, n):
threshold = (1 - n) * max(np.ndarray.flatten(np.array(array)))
return np.where(array > threshold, 1, 0)
например,
top_n_percent([1, 0.99996, 0.99994, 0.5], 0.00005)
## array([1, 1, 0, 0])
Ваша формулировка
в верхнем 0,005% в значении
- это все, что не ясно. Означает ли это, что максимальное значение равно 1, а любые значения в массиве, превышающие 0,995% от этого значения, должны быть равны 1, независимо от того, сколько их? (может быть, что все значения больше, чем Or. Это означает, что из всех n элементов только те, которые принадлежат к верхнему 0.99995, должны быть выражены как 1, а все остальные как 0?