Q:

Как работает функция 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 столбцом, но получается двумерный массив.
 Часть кода идущая после инициализации прощена, так как не имеет отношения к вопросу.

A:

произведение скаляров:
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)

