我想对一个像这样的numpy数组求和
import numpy as np
import sympy as sy
import cv2
i, j = sy.symbols('i j', Integer=True)
#next read some grayscale image to create a numpy array of pixels
a = cv2.imread(filename)
b = sy.summation(sy.summation(a[i][j], (i,0,1)), (j,0,1)) #double summation
但我面对的是一个错误。是否可以将numpy符号作为numpy数组的索引来处理?如果没有,你能给我一个解决办法吗? 谢谢。在
矩阵符号仅限于二维矩阵。推广到数组 任何维度,都可以使用
IndexedBase
生成表达式。lambdify
是 当前与IndexedBase
不兼容,但它可以与一起使用DeferredVectors
。所以技巧是将DeferredVector
传递给lambdify
:不能在SymPy表达式中直接使用numpy对象,因为numpy对象不知道如何处理符号变量。在
相反,使用SymPy对象以符号方式创建所需的东西,然后
lambdify
它。numpy数组的SymPy版本是IndexedBase,但它似乎有一个bug,因此,由于数组是二维的,所以也可以使用MatrixSymbol。在(还要注意,创建整数符号的正确语法是})。在
symbols('i j', integer=True)
,而不是{请注意,您必须使用
a[i, j]
,而不是不受支持的a[i][j]
。在相关问题 更多 >
编程相关推荐