社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

当使用sympy和lambdify时,矩阵的python-dot积似乎不起作用。

Ant • 5 年前 • 1579 次点击  

我正在用python实现一个数据处理流。我试着用符号计算( sympy numpy )尽可能有与代码一致的清晰文档。所以当我试图得到点积并用它来表示实矩阵时 lambdify )我还有别的发现:

import numpy as np
from sympy import *
init_printing()

A = Matrix([[1, 2], [1, 100]])
B = Matrix([[3, 4], [10, 1000]])
AA = MatrixSymbol('A',2,2)
BB = MatrixSymbol('B',2,2)
mulab = lambdify([AA,BB],AA*BB)
print(mulab(A,B))
print(A*B)

给予

[7, 1010, 406, 100020]
Matrix([[23, 2004], [1003, 100004]])

Link to the live version of code

有没有人面临类似的问题?有解决办法吗?

提前谢谢你。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/43641
 
1579 次点击  
文章 [ 1 ]  |  最新文章 5 年前
asmeurer
Reply   •   1 楼
asmeurer    6 年前

lambdify 创建一个应该在numpy数组上使用的函数。如果向此函数传递sympy对象,则生成的行为未定义。如果要对symphy表达式求值,只需使用symphy表达式,使用 subs 替换表达式。

>>> (AA*BB).subs({AA: A, BB: B}).doit()
⎡ 23    2004 ⎤
⎢            ⎥
⎣1003  100004⎦

如果有numpy数组,则在需要使用lambdify时:

>>> mulab(np.array([[1,2],[1,100]]), np.array([[3,4],[10,1000]]))
 [[    23   2004]
 [  1003 100004]]