#python #python-3.x #numpy
Вопрос:
Предположим, у меня есть функция, которая принимает массив фигур numpy (m, k)
, и я хочу применить эту функцию к каждому элементу массива фигур numpy (n, m, k)
. Наивный подход состоит в том, чтобы выполнить итерацию по заданному массиву numpy и добавить преобразованный элемент в пустой массив numpy формы (0, m, k)
result = np.empty(shape=(0, m, k))
for element in elements:
result = np.append(result, [some_operation(element)], axis=0)
Каков эффективный способ применить некоторые, скажем, «операции» к массиву фигур numpy (n, m, k)
? Я думаю, что есть более «глупый» подход.
Большое спасибо.
Комментарии:
1. Добавление списка более эффективно
2. Многие функции и методы numpy могут работать с 3d-массивом, но, не зная, что находится в вашей функции, мы не можем предложить способ сделать это. Поэтому самый общий способ-повторить это первое измерение и собрать результаты. Если
some_operation
это достаточно сложно, механизм итерации не имеет большого значения; это вызовsome_operation
n раз, который займет большую часть времени. Ноnp.append
это наименее эффективно; добавление списка лучше или назначениеresult[element, :,:]
.3.
list(map(f, array))
немного быстрее, чемlist.append
цикл, особенно для очень больших массивов
Ответ №1:
Я думаю, что карта-наиболее подходящая функция для этого
Комментарии:
1. Спасибо, что было очень полезно!