Numpy: внешнее произведение n векторов

Я пытаюсь сделать что-то простое в NumPy, и я уверен, что должен быть легкий способ сделать это.

В основном у меня есть списокn векторы с различной длиной. Еслиv1[i] этоiну первый элемент вектора, то я хочу найтиnмассив А, такой, что

A[i,j,k...] = v1[i] v2[j] v3[k] ...

Моя проблема в том, что:

outer занимает всего двавектор аргументы.

einsum требует такой параметр, как "abcd ...", который кажется ненужным.

kron требует того, что кажется довольно сложным изменением формы, и принимает только два аргумента.

Я хотел бы избежать как можно большей сложности, чтобы избежать появления ошибок. Поэтому желательно, чтобы я хотел одну команду.

Пока что лучшее, что у меня есть, это:

 vs = [v1, v2, v3 ...]
 shape = map(len, vs)

 # specify the orientation of each vector
 newshapes = diag(array(shape)-1)+1
 reshaped = [x.reshape(y) for x,y in zip(vs, newshapes)]

 # direct product
 A = reduce(lambda a,b: a*b, reshaped, 1)

Ответы на вопрос(2)

Ваш ответ на вопрос