В python, какой самый эффективный способ применить функцию к списку - PullRequest
0 голосов
/ 07 апреля 2020

мои фактические данные огромны и довольно тяжелы. Но если я упросту и скажу, что у меня есть список чисел x = [1,3,45,45,56,545,67]

, и у меня есть функция, которая выполняет какое-то действие с этими числами?

def sumnum(x):
    return(x=np.sqrt(x)+1)

Каков наилучший способ применить это? функция к списку? Я не хочу подавать заявку на l oop. Будет ли «карта» лучшим вариантом или что-то более быстрое / эффективное, чем это?

спасибо, Прасад

1 Ответ

1 голос
/ 07 апреля 2020

В стандартном Python функция map, вероятно, является самым простым способом применения функции к массиву (хотя и не уверен в эффективности). Однако, если ваш массив огромен, как вы упомянули, вы можете захотеть использовать numpy .vectorize , что очень похоже на встроенную в Python функцию map

Редактировать: Возможный пример кода:

vsumnum = np.vectorize(sumnum)
x = vsumnum(x)

Первый вызов функции возвращает функцию, которая векторизована, что означает, что numpy подготовил ее для сопоставления с вашим массивом, а вторая функция Вызов фактически применяет функцию к вашему массиву и возвращает полученный массив. Взято из документации, этот метод предоставлен для удобства, а не эффективности, и в основном такой же, как и для l oop

Редактировать 2: Как упоминалось @ Ch3steR, numpy также допускает поэлементные операции с массивами , поэтому в этом случае, поскольку вы выполняете простые операции, вы можете просто выполнить np.sqrt (x) + 1, который добавит 1 к квадрату root каждого элемента. Такие функции, как map и numpy.vectorize лучше, когда вам нужно применить более сложные операции к массиву

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...