Помогите разобраться с функцией 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)
Комментариев нет:
Отправить комментарий