Обойти, ошибка numpy объектов в Python - PullRequest
4 голосов
/ 19 июля 2011

У меня проблема с умножением двух больших матриц в python с использованием numpy.

У меня есть матрица (15,7), и я хочу умножить ее на транспонирование, то есть AT (7,15) * A (15 * 7) и математически это должно работать, но я получаю ошибку:

ValueError: несоответствие формы: объекты не могут быть переданы одной фигуре Я использую NumPy в Python. Как я могу обойти это, кто-нибудь, пожалуйста, помогите!

1 Ответ

14 голосов
/ 19 июля 2011

Вы, вероятно, представляли матрицы в виде массивов.Вы можете либо преобразовать их в матрицы с np.asmatrix, либо использовать np.dot для умножения матриц:

>>> X = np.random.rand(15 * 7).reshape((15, 7))
>>> X.T * X
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: operands could not be broadcast together with shapes (7,15) (15,7)
>>> np.dot(X.T, X).shape
(7, 7)
>>> X = np.asmatrix(X)
>>> (X.T * X).shape
(7, 7)

Одна разница между массивами и матрицами состоит в том, что * в матрице - это матричное произведение,в то время как в массиве это поэлементный продукт.

...