dotє матричним множенням, але *робить щось інше.
У нас є два масиви:
X, форма (97,2)
y, форма (2,1)
З Numpy масивами - операція
X * y
робиться елементарно, але одне або обидва значення можуть бути розширені в одному або декількох вимірах, щоб зробити їх сумісними. Ця операція називається мовленням. Розміри, де розмір становить 1 або відсутні, можуть використовуватися для мовлення.
У наведеному вище прикладі розміри несумісні, оскільки:
97 2
2 1
Тут є суперечливі числа в першому вимірі (97 і 2). Саме на це скаржиться ValueError, наведений вище. Другий вимір був би нормальним, оскільки число 1 ні з чим не суперечить.
Для отримання додаткової інформації про правила мовлення: http://docs.scipy.org/doc/numpy/user/basics.broadcasting.html
(Зверніть увагу, що якщо Xі yє тип numpy.matrix, то зірочка може використовуватися як множення матриць. Моя рекомендація - не слідкувати відnumpy.matrix , воно, як правило, ускладнює більше, ніж спрощує речі.)
Ваші масиви повинні бути добре з numpy.dot; якщо ви отримаєте помилку numpy.dot, ви повинні мати якусь іншу помилку. Якщо фігури неправильні numpy.dot, ви отримуєте інший виняток:
ValueError: matrices are not aligned
Якщо ви все-таки отримаєте цю помилку, будь ласка, опублікуйте мінімальний приклад проблеми. Приклад множення на масиви, схожі на ваші:
In [1]: import numpy
In [2]: numpy.dot(numpy.ones([97, 2]), numpy.ones([2, 1])).shape
Out[2]: (97, 1)
X*yне повинні працювати (і це не робить), алеnp.dot(X,y)іX.dot(y))повинні працювати (і для мене вони роблять).