Форма результата: np.random.randn(10,5) @ np.random.randn(5)

#numpy #broadcast

Вопрос:

Какова форма результата, равного 10 для этого уравнения numpy: np.random.randn(10,5) @ np.random.randn(5). Спасибо вам, ребята.

Ответ №1:

Согласно странице документации для numpy.matmul :

Если второй аргумент равен 1-D, он преобразуется в матрицу путем добавления 1 к ее измерениям. После умножения матрицы добавленный 1 удаляется.

Это означает, что после добавления дополнительного измерения ко второму операнду операция выполняется между двумя 2D массивами (10, 5) и (5, 1) . Матричное умножение выполняется (i, j) @ (j, k) = (i, k) в соответствии с правилом, поэтому вывод формируется (10, 1) , а затем удаляется дополнительное добавленное измерение: (10,) .

Комментарии:

1. широковещательная передача не применяется к последним 2 измерениям этих массивов. Это (10,5) с (5,1), дающим (10,1) сжатие до (10,)