У меня проблема с созданием того, что можно рассматривать как декартово произведение массива векторов в Python. У меня есть код, который дает все возможные разделы числа n над переменными r и возвращает его в виде массива numpy. Что я хотел бы сделать, так это иметь возможность вызывать этот код произвольное количество раз, а затем создавать набор всех возможных комбинаций массивов.
Итак, чтобы привести пример, я мог бы назвать код раздела и каждый последующий вызов (для переменного набора параметров)
array([[2,0],[1,1],[2,0]])
array([[1,0],[0,1]])
array([[0,0]])
Я ищу, чтобы иметь возможность вернуть набор
array([[2,0],[1,0],[0,0]])
array([[2,0],[0,1],[0,0]])
array([[1,1],[1,0],[0,0]])
.....
либо в виде общего массива, либо возвращая его построчно (из-за очевидных проблем с памятью по мере роста размера разделяемого числа).
Раньше я решал эту проблему с помощью itertools.product и запускал код под PyPy. Однако мне пришлось переключиться с PyPy на стандартный python из-за необходимости Numpy в других частях проекта, и я пытаюсь воспроизвести скорость кода PyPy с помощью Numpy. Мне удалось заставить это работать очень грубо, но код потратил так много времени на переход между типами данных, чтобы попытаться загрузить решение вместе, что это нецелесообразно для реализации.
Мне было интересно, сможет ли кто-нибудь помочь мне, предоставив небольшое руководство относительно того, как я должен продвигаться с этим в Python.
Спасибо