Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 24, 2010 15:27:12

Nerazumovskiy
От:
Зарегистрирован: 2010-09-24
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

scipy matrix-vector

Хочу написать несложный алгоритм в котором требуется алгебраическое умножение матрицы на матрицу, и матрицы на вектор
пишу соодветствующий код:

Win32, Python 2.6, scipy-0.8, numpy-1.5

from numpy import *
from scipy.linalg import *

A = matrix([[1,0],[1,1]])
b = array([2,1])

print(A*A)

print(A*b)
выдает ошибку :
______________________________________________
[
]
Traceback (most recent call last):
File “D:\programming\works\TheortofTheSystems\NewPythonProject\src\newpythonproject.py”, line 22, in <module>
print(B*c)
File “C:\Python26\Lib\site-packages\numpy\matrixlib\defmatrix.py”, line 330, in __mul__
return N.dot(self, asmatrix(other))
ValueError: objects are not aligned
______________________________________________

может кто подскажет как правильно реализовать матрично-векторные операции?



Офлайн

#2 Сен. 24, 2010 15:30:59

Nerazumovskiy
От:
Зарегистрирован: 2010-09-24
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

scipy matrix-vector

у меня получилось умножить вот так:

B = matrix([[1,0],[1,1]])
c = matrix([1,1])
print(B*c.T)



Офлайн

#3 Сен. 25, 2010 17:18:38

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

scipy matrix-vector

Мне кажется A*B почленное умножение а матричное умножение это разновидность тензорной операции свертки по индексу, соответственно можно использовать numpy.dot или numpy.tensordot

from numpy import *
a=array([,])
b=a.copy()
print a*b
print dot(a,b)
print tensordot(a,b,(0,1))
print tensordot(a,b,(1,1))

результат:
[
]
[
]
[
]
[
]



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version