gpt4 book ai didi

python - 是否可以使用 sympy 符号索引 numpy 数组?

转载 作者:行者123 更新时间:2023-11-28 21:10:42 26 4
gpt4 key购买 nike

Helle 我想像这样对一个 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 数组的索引来处理?如果不能,你能给我一个解决方案吗?谢谢。

最佳答案

不能在 SymPy 表达式中直接使用 numpy 对象,因为 numpy 对象不知道如何处理符号变量。

相反,使用 SymPy 对象以符号方式创建您想要的东西,然后 lambdify 它。 numpy 数组的 SymPy 版本是 IndexedBase,但它似乎有一个错误,因此,由于您的数组是二维的,您也可以使用 MatrixSymbol。

In [49]: a = MatrixSymbol('a', 2, 2) # Replace 2, 2 with the size of the array

In [53]: i, j = symbols('i j', integer=True)

In [50]: f = lambdify(a, Sum(a[i, j], (i, 0, 1), (j, 0, 1)))

In [51]: b = numpy.array([[1, 2], [3, 4]])

In [52]: f(b)
Out[52]: 10

(另请注意,创建整数符号的正确语法是 symbols('i j', integer=True),而不是 symbols('i j', Integer=True))。

请注意,您必须使用 a[i, j] 而不是 a[i][j],后者不受支持。

关于python - 是否可以使用 sympy 符号索引 numpy 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36282172/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com