Я ищу express в чистом виде python, что делает функция np.kron.
Допустим, у меня есть эти списки:
v1 = [1, 0, 0, 1]
v2 = [1, 0, 0, 1]
i хотел бы определить функцию, которая будет создавать список списков путем умножения v1 на каждый элемент в v2. Таким образом, эти два списка будут создавать 4 списка:
[[1 * v1[0]],[0 * v1[1]],[0 * v1[2]],[1 * v1[3]]]
В настоящее время я могу получить правильные списки из понимания списка:
i = [[a*b for a in v1] for b in v2]
>>[[1, 0, 0, 1], [0, 0, 0, 0], [0, 0, 0, 0], [1, 0, 0, 1]]
эти списки верны, но когда я конвертирую в np.array и переформатируйте его, в квадрантах будут единицы, а не вниз по диагонали:
print(np.array(i).reshape(4,4))
[[1 0 0 1]
[0 0 0 0]
[0 0 0 0]
[1 0 0 1]]
если np.kron передается v1, v2 после преобразования их в массивы numpy он даст:
i2 = np.kron((np.array(v1).reshape(2,2)),(np.array(v2).reshape(2,2)))
[[1 0 0 0]
[0 1 0 0]
[0 0 1 0]
[0 0 0 1]]
- красивая единичная матрица 4 x 4; вот что я ищу express в чистом виде python, а не с помощью функции np kron.