У меня есть список натуральных чисел, и я хочу многократно вычитать наименьший элемент из всех элементов, но только если этот элемент не является экземпляром минимума. Например, за одну итерацию
a = np.array([3, 5, 9, 3, 3])
становится [3, 2, 6, 3, 3]
и в конечном итоге [1,1,1,1,1]
.
То есть ни одна запись никогда не уменьшается до 0. Я подозреваю, что может существоватьпростой способ изменить a - min(a)
так, чтобы a[0]
, a[3]
и a[4]
не становились 0, но я не знаю.
Я знаю, что это может быть достигнуто с помощью понимания списка:
while len(set(arr)) > 1:
arr = [a - min(arr) if a > min(arr) else a for a in arr]
Массивы могут быть очень большими, поэтому, учитывая экономию времени, я надеюсь, что NumPy имеет удобный способ сделать это. Я довольно новичок в Python, поэтому ценится исправление / информация во всех сферах.