У меня есть список Python 3, который содержит произвольное количество numpy массивов разного размера / формы. Проблема состоит в том, чтобы удалить наименьшее p% (где, например, p = 20%) числа (по величине) в списке до нуля.
Пример кода:
l = []
l.append(np.random.normal(1.5, 1, size = (4, 3)))
l.append(np.random.normal(1, 1, size = (4, 4)))
l.append(np.random.normal(1.8, 2, size = (2, 4)))
for x in l:
print(x.shape)
'''
(4, 3)
(4, 4)
(2, 4)
'''
Как я могу удалить наименьший p% чисел из списка 'l' Python "глобально", это означает, что для всех numpy массивов, содержащихся в списке 'l', он удалит наименьший p% числа наименьшие числа (по величине) до нуля?
Я использую Python 3,8 и numpy 1,18.
Спасибо!
Пример игрушки:
l
'''
[array([[ 0.95400011, 1.95433152, 0.40316605],
[ 1.34477354, 3.24612127, 1.54138912],
[ 1.158594 , 0.77954464, 0.4600395 ],
[-0.03092974, 3.55349303, 0.85526191]]),
array([[ 2.33613547, 0.12361808, 0.27620035, 0.70452795],
[ 0.76989846, -0.28613191, 1.90050011, 2.73843595],
[ 0.13510186, 0.91035556, 1.42402321, 0.60582303],
[-0.13655066, 2.4881577 , 2.0882935 , 1.40347429]]),
array([[-1.63365952, 1.2616223 , 0.86784273, -0.34538727],
[ 1.37161267, 2.4570491 , -0.72419948, 1.91873343]])]
'''
'l' состоит из 36 цифр. Теперь 20% от 36 = 7,2 или округление в меньшую сторону = 7. Идея состоит в том, что 7 наименьших величин из 36 чисел удаляются путем маскирования их до нуля!