使用SymPy批量求解数组对应线性方程的变量x
批量求解线性方程的高效方案
核心思路
你的方程.85x - 元素 = 0本质是简单线性方程,解可直接通过数学推导得出:x = 元素 / 0.85。用SymPy做符号运算处理大量数值元素完全冗余,Numpy的数组批量运算才是最优选择——速度快、代码简洁,完美适配数千个元素的场景。
代码实现
推荐方案:Numpy批量运算
import numpy as np # 你的二维输入数组 input_arr = np.array([[17.594], [15.79 ], [11.31 ], [16.39 ], [13.87 ], [16.99 ]]) # 一行代码批量计算所有解 x_solutions = input_arr / 0.85 # 输出结果 print(x_solutions)
运行后直接得到对应每个元素的解:
[[20.69882353] [18.57647059] [13.30588235] [19.28235294] [16.31764706] [19.98823529]]
备选方案:SymPy批量处理(不推荐大量元素)
如果一定要用SymPy实现,可通过遍历数组元素完成,但效率远低于Numpy,仅适合少量元素场景:
from sympy.solvers import solve from sympy import Symbol import numpy as np x = Symbol('x') input_arr = np.array([[17.594], [15.79 ], [11.31 ], [16.39 ], [13.87 ], [16.99 ]]) # 扁平化数组后逐个求解,再恢复原形状 x_solutions = [solve(0.85*x - elem, x)[0] for elem in input_arr.flatten()] x_solutions = np.array(x_solutions).reshape(input_arr.shape) print(x_solutions)
方案对比
- Numpy:基于C的底层运算,处理数千个元素仅需毫秒级,代码无冗余循环,是生产环境首选。
- SymPy:符号运算适合复杂代数推导,但处理纯数值批量计算时,每个元素都要做符号解析,速度慢且没必要。
内容的提问来源于stack exchange,提问作者jumpman23
相关产品推荐
相关产品推荐

