Пусть X - матрица M x N. Обозначим xi i-й столбец X. Я хочу создать трехмерную матрицу N x M x M, состоящую из матриц M x M xi.dot(xi.T)
.Внешнее произведение каждого столбца 2D-массива для формирования 3D-массива - NumPy
Как я могу сделать это наиболее элегантно с numpy? Можно ли это сделать, используя только операции с матрицами без петель?
Звучит как работа для np.einsum. – user2357112
@Divakar Спасибо, отредактирован. Теперь X является матрицей M x N. – Virtuoz
Кажется, что (строки, столбцы) были перемешаны здесь ... Чтобы использовать конкретные числа, предположим, что мы начинаем с (Mrows, Ncols) = (2,3). OP использует операции столбцового вектора 'Ni * Ni.T'. Каждый столбец имеет длину Mrows = 2, поэтому произведение дает матрицу (2,2) - то есть (перемещается, раскладывается). Выполнение этого для каждого столбца и укладка результата в третьем измерении должно привести к (M x M x N) матрице. –