Страницы

Поиск по вопросам

понедельник, 28 января 2019 г.

Как работает функция numpy.dot

Помогите разобраться с функцией numpy.dot. Как то не очень понятно описание в документации. Эта функция работает так же как описано в этой статье?
Есть следующий код:
Nj = 100 Nin = 100
Xin = np.zeros((Nin,1)) Winj = np.zeros((Nin,Nj))
WinjT = np.transpose(Winj) Uj = np.dot(WinjT,Xin)
По идее должен получиться массив Uj с числом строк Nj и 1 столбцом, но получается двумерный массив. Часть кода идущая после инициализации прощена, так как не имеет отношения к вопросу.


Ответ

произведение скаляров:
In [60]: np.dot(2, 3) Out[60]: 6
произведение 1D массивов (векторов):
In [61]: a = np.array([1, 2])
In [62]: b = np.array([10, 11])
In [63]: np.dot(a, b) Out[63]: 32
произведение 2D массивов:
In [64]: a = np.array([[1,2], [3,4]])
In [65]: b = np.array([[2,3], [4,5]])
In [66]: a Out[66]: array([[1, 2], [3, 4]])
In [67]: b Out[67]: array([[2, 3], [4, 5]])
In [68]: np.dot(a, b) Out[68]: array([[10, 13], [22, 29]])
Пояснение:
10: 1*2 + 2*4 13: 1*3 + 2*5
22: 3*2 + 4*4 29: 3*3 + 4*5

Ваш пример:
In [69]: %paste Nj = 100 Nin = 100
Xin = np.zeros((Nin,1)) Winj = np.zeros((Nin,Nj))
WinjT = np.transpose(Winj) Uj = np.dot(WinjT,Xin)
## -- End pasted text --
Получился 2D массив, состоящий из 100 строк и одного столбца:
In [70]: Uj.shape Out[70]: (100, 1)

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

Отправить комментарий