2013-07-27 3 views
3

я матрица я держу в переменной с именем М. Затем я использую:Почему numpy дает ошибку несоответствия размера?

dist = np.dot(M[0], M[0]) 

и я всегда получаю ошибку в конечном итоге приводит к:

File "/usr/lib/python2.7/dist-packages/scipy/sparse/base.py", line 246, in __mul__ 
     raise ValueError('dimension mismatch') 
    ValueError: dimension mismatch 

Я действительно не понимаю, как этот оператор может выйти из строя с несоответствием размеров - я использую аргумент M [0] для первого и второго массивов, они имеют одинаковый размер.

+1

Покажите нам, что 'M [0]' содержит , –

+0

Вы действительно имеете в виду, что M - это матрица, или это просто простой ndarray? Если это ndarray, каковы его размеры? – user2357112

ответ

3

Если M является X матрицей Y, то M[0] является 1 по Y. Вы не можете умножить 2 1-от-Y матриц, если Y не является 1.

+0

'M = np.array ([[1,2,3], [4,5,6], [7,8,9]]); np.dot (M [0], M [0]) дает 14, как я ожидаю. –

+0

Это не [матрица] (http://docs.scipy.org/doc/numpy/reference/generated/numpy.matrix.html). Это [ndarray] (http://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.html). – user2357112

+0

Хороший звонок! Возможно, ОП ожидал поведения ndarray. –