Как оптимизировать многомерные операции с Numpy массивами с помощью Numexpr
Оптимизация многомерных операций с массивами Numpy с помощью Numexpr
Быстрое вычисление
Реальный кейс по оптимизации производительности в Numpy

Это относительно краткая статья. В ней я буду использовать реальный сценарий в качестве примера, чтобы объяснить, как использовать выражения Numexpr в многомерных массивах Numpy для достижения значительного повышения производительности.
Не так много статей, объясняющих, как использовать Numexpr в многомерных массивах Numpy и как использовать выражения Numexpr, поэтому я надеюсь, что эта статья вам поможет.
Введение
Недавно, во время обзора своих старых работ, я наткнулся на этот код:
def predict(X, w, b): z = np.dot(X, w) y_hat = sigmoid(z) y_pred = np.zeros((y_hat.shape[0], 1)) for i in range(y_hat.shape[0]): if y_hat[i, 0] < 0.5: y_pred[i, 0] = 0 else: y_pred[i, 0] = 1 return y_pred
Этот код преобразует результаты прогнозирования из вероятностей в классификацию результатов 0 или 1 в модели логистической регрессии машинного обучения.
- Векторный поиск – не все, что вам нужно
- Применение AIoT в современности
- Большие языковые модели TinyBERT — дистилляция BERT для NLP
Но, простите, кто будет использовать for loop
для итерации по Numpy ndarray?
Вы можете предвидеть, что при достижении определенного объема данных они не только будут занимать много памяти, но и производительность будет низкой.
Именно, автором этого кода был я, когда я был моложе.
Ощущая ответственность, сегодня я планирую переписать этот код с использованием библиотеки Numexpr.
По пути я покажу вам, как использовать Numexpr и выражение Numexpr’s where
в многомерных массивах Numpy для достижения значительного повышения производительности.
Реализация кода
Если вы не знакомы с основным использованием Numexpr, вы можете обратиться к этой статье:
Исследование Numexpr: мощный движок за Pandas
Повышение производительности анализа данных с помощью Numexpr для Python и функциями eval/query для Pandas
towardsdatascience.com