Как эргономично выполнить умножение матриц внутри потокового движка Polars?Python

Программы на Python
Ответить
Anonymous
 Как эргономично выполнить умножение матриц внутри потокового движка Polars?

Сообщение Anonymous »

У меня есть большая таблица данных, содержащая сотни миллионов строк/событий, каждая из которых имеет около 50 числовых столбцов, назовите их от c1 до c50. Допустим, для каждого события я хочу выполнить умножение матрицы на вектор, где я определяю матрицу через, например
M = ( (c1, c2, c3), (c4, c5, c6), (c7, c8, c9) )
и вектор через, например
v = (c48, c49, c50)
Я мог бы сделать это с помощью numpy, но из-за размера моего набора данных одна операция превышает объем оперативной памяти, что в наши дни становится все более важным фактором. Очевидным решением является разделение задания на пакеты и вручную корректировка размера каждого из них. Однако это непростая задача, и я обнаружил, что библиотека Polars может выполнить эту работу, используя механизм потоковой передачи и сохраняя следующие выходные данные:
v1 = c1 * c48 + c2 * c49 + c3 * c50
и аналогично для двух других выходных векторных компонентов. Примечательно, что использование механизма потоковой передачи означает, что мне не нужно думать о разделении набора данных на пакеты. К счастью, все эти операции выполняются только над строками, что означает, что все умножения и сложения доступны в потоковом движке. Однако, если мне придется объединить умножения матриц вместе или матрицы станут больше, вы можете себе представить, насколько громоздким это станет.
Таким образом, я пытаюсь продумать систему или оболочку для автоматизации расширения всех операций линейной алгебры на умножение и сложение, но мне не очень повезло, хотя, вероятно, это не должно быть очень сложной проблемой. Я знаю, что Polars, возможно, не были разработаны специально для этого, но его потоковый движок делает это направление очень привлекательным по сравнению с numpy.
Спасибо за помощь.

Подробнее здесь: https://stackoverflow.com/questions/798 ... ming-engin
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»