Numpy Vectorize, как производить перебор по столбцам

Рейтинг: 0Ответов: 0Опубликовано: 03.03.2023

Имеется функция, которая производит какие то операции с двумя векторами и возвращает tuple из двух значений:

def func(x, y):
    ...
    return res_float1, res_float2

Так же имеем массив и вектор, например:

x = np.array([[1, 4, 7, -1],
              [2, 5, 8, -2],
              [3, 6, 9, -3]])

y = np.array([[3],
              [3],
              [3]])

Необходимо для каждого столбца Х произвести следующее: запихнуть его в func() вместе с У, получить результат в виде кортежа и записать его в строку нового массива. То есть получить что то типа:

res = np.array([[func(x[:, 0], y)[0], func(x[:, 0], y)[1]],
                [func(x[:, 1], y)[0], func(x[:, 1], y)[1]],
                [func(x[:, 2], y)[0], func(x[:, 2], y)[1]],
                [func(x[:, 3], y)[0], func(x[:, 3], y)[1]]])

Размер массива Х и вектора У заранее, конечно, неизвестен Можно, конечно, циклом по каждому столбцу пройти, но массивы могут быть огромными, не хочется цикл городить. Я подумал, что функция np.vectorize() может помочь. Но, судя по выводу, она похоже применяет оригинальную функцию не к каждому столбцу, а к каждому элементу.

Ответы

Ответов пока нет.