Применение функции к столбцам из нескольких массивов - PullRequest
0 голосов
/ 26 апреля 2019

У меня есть функция f(a, b, c), которая принимает в качестве параметров 3 вектора различной длины и возвращает одномерный массив (такой же длины, как у параметра a).У меня также есть три 2D-массива (A, B, C) с разными dtype и одним идентичным измерением (N), в то время как другое измерение отличается для всех трех.

Я хочу применить f всамый эффективный способ для двумерных массивов вдоль их оси неидентичной длины, так что f вызывается с одним столбцом (или строкой, если транспонирование имеет какое-либо различие) от каждого.

Наивный подход был бычто-то вроде сжатия двухмерных массивов вдоль идентичной оси и итерации по 3 кортежам, содержащим по одному столбцу из каждого массива (т. е. вызов f N раз), например.с N = 3:

A = np.arange(9).reshape(3, 3)
B = np.arange(12).reshape(4, 3)
C = np.arange(15).reshape(5, 3)

result = np.array([f(a, b, c) for a, b, c in zip(A.T, B.T, C.T)])

Реальное N в моем случае составляет ~ 30K, в то время как другие размеры массивов варьируются от 5 до ~ 1000.

Есть ли (значительно) более производительный способ с массивами такого размера, либо с использованием чистого Python, либо numpy?

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