You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

是否存在Numpy/Scipy内置函数可解析数组组合的基础算术语法?

回答

Numpy 和 Scipy 并没有专门内置用于解析这类自定义数组算术组合语法的函数——但你的需求其实完全可以直接用 Python 原生的 eval() 实现,因为你允许的语法本身就是标准的 Python/Numpy 合法表达式。

具体实现思路

  1. 准备好用户可访问的数组变量(比如 a、b、c),构造一个受限的命名空间(即使你说仅自身使用无安全问题,这种方式也能避免意外调用无关代码)。
  2. 直接将用户输入的公式传入 eval(),仅在这个受限命名空间中执行。

示例代码:

import numpy as np

# 假设这是用户选择的原始数据数组
a = np.array([1, 2, 3, 4])
b = np.array([5, 6, 7, 8])
c = np.array([9, 10, 11, 12])

# 构造仅包含允许内容的命名空间
allowed_context = {
    'a': a,
    'b': b,
    'c': c,
    # 如果需要开放更多numpy函数,可添加,但你的场景里数组自身方法已足够
}

# 用户输入的公式
user_formula = "a + b.roll(2) / b.max() * a.max()"

# 执行计算
result = eval(user_formula, {}, allowed_context)

# 后续绘图逻辑
# plt.plot(result)

额外说明

  • 你允许的语法(基础算术、浮点数、数组方法如 .max()、.roll())都是 Numpy 数组原生支持的操作,eval() 可以直接解析执行,不需要额外的解析工具。
  • 如果需要严格限制用户只能使用指定方法(比如禁止调用其他数组方法),可以自定义数组包装类,仅暴露允许的方法,但对于内部使用场景,通常没必要这么做。

内容的提问来源于stack exchange,提问作者Basj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 23:52:42