Я пытаюсь вычесть скалярное произведение каждой строки против себя в векторе nx3.Позвольте мне объяснить немного лучше: мне нужно перейти от nx3 к массиву nx3x3.
Если у меня есть следующее:
A = np.array([[1, 2, 2],
[4, 2, 3])
Я хотел бы получить то, что было быбыть:
Первый элемент:
np.dot(A[0].reshape(3,1), A[0].reshape(1,3)) = array([[1, 2, 2], [2, 4, 4], [2, 4, 4]])
Второй элемент:
np.dot(A[1].reshape(3,1), A[1].reshape(1,3)) = array([[16, 8, 12], [8, 4, 6], [12, 6, 9]])
Итак, мой окончательный массив будет:
result = array([[[ 1, 2, 2],
[ 2, 4, 4],
[ 2, 4, 4]],
[[16, 8, 12],
[ 8, 4, 6],
[12, 6, 9]])
result.shape = (2, 3, 3)
Я знаюЯ могу сделать это с помощью цикла for, но я думаю, должен быть способ сделать это быстрее и более напрямую.Скорость жизненно важна для того, что мне нужно.
Надеюсь, я объяснил себя достаточно правильно.Заранее спасибо.