Я хотел бы умножить следующие матрицы (используя numpy) наиболее эффективным способом.
Это код для матриц:
a = np.array([[1, 5], [2, 6], [3, 7], [4, 8]])
m = np.array([[1, 0, 0, 1], [1, 0, 1, 0], [0, 1, 0, 1], [0, 1, 1, 1]])
Это матрицы лучше визуализировать:
a:
[[1 5]
[2 6]
[3 7]
[4 8]]
m:
[[1 0 0 1]
[1 0 1 0]
[0 1 0 1]
[0 1 1 1]]
Я хочу умножить a на (первый столбец матрицы m), вот так
a m[:,0] x0
[[1 5] [[1] [[1 5]
[2 6] * [1] = [2 6]
[3 7] [0] [0 0]
[4 8]] [0]] [0 0]
И затем я хочу умножить a на (второй столбец матрицы m), вот так
a * m[:,1] = x1
А затем 3-й и 4-й столбцы
a * m[:,2] = x2
a * m[:,3] = x3
И, наконец, я хочу поместить полученные матрицы x0, x1, x2, x3 все в одна матрица.
X = [x0, x1, x2, x3]
Размер X в этом примере равен 4 x 8.
Окончательный результат в этом примере:
X =
[[[1 5 0 0 0 0 1 5]
[2 6 0 0 2 6 0 0]
[0 0 3 7 0 0 3 7]
[0 0 4 8 4 8 4 8]]
Я хотел бы знать, как это сделать с помощью встроенных функций numpy и использования генераторов вместо использования 2 для циклов, если это возможно.
Это всего лишь пример. На самом деле матрицы имеют большие размеры, и важно, чтобы умножения выполнялись как можно быстрее.
Спасибо