У меня есть большая таблица данных, содержащая сотни миллионов строк/событий, каждая из которых имеет около 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
Как эргономично выполнить умножение матриц внутри потокового движка Polars? ⇐ Python
Программы на Python
1767368190
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.
Спасибо за помощь.
Подробнее здесь: [url]https://stackoverflow.com/questions/79858789/how-to-ergonomically-perform-matrix-multiplication-inside-polars-streaming-engin[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия