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

为含Drake表达式的NumPy数组添加正确类型提示的方法

为包含Drake符号对象的NumPy数组添加类型提示的解决方案

问题背景

当创建包含pydrake.symbolic.Expression或Formula等Drake符号对象的NumPy数组时,直接使用npt.NDArray[pydrake.symbolic.Expression]会触发类型检查错误,错误信息如下:

Could not specialize type "NDArray[ScalarType@NDArray]"
Type "Expression" cannot be assigned to type "generic"
"Expression" is incompatible with "generic"

用户的初始代码示例:

import numpy as np
import numpy.typing as npt
import pydrake.symbolic

def some_function(expr: pydrake.symbolic.expression) -> npt.NDArray[pydrake.symbolic.expression]:
   return np.array([expr])

解决方案

NumPy的NDArray类型提示要求标量类型属于其认可的数值类型体系,而Drake的符号对象不属于此类。要明确标注数组内容类型,可采用以下两种方案:

方案1:用np.dtype包装Drake类型

通过np.dtype[pydrake.symbolic.Expression]指定数组元素类型,同时创建数组时显式声明dtype=object(避免NumPy自动尝试转换类型):

import numpy as np
import numpy.typing as npt
import pydrake.symbolic

def some_function(expr: pydrake.symbolic.Expression) -> npt.NDArray[np.dtype[pydrake.symbolic.Expression]]:
    return np.array([expr], dtype=object)

方案2:使用typing.Sequence(非严格NDArray场景)

如果不需要严格标注为NumPy数组,仅需明确元素类型,可使用Sequence结合具体Drake类型:

from typing import Sequence
import numpy as np
import pydrake.symbolic

def some_function(expr: pydrake.symbolic.Expression) -> Sequence[pydrake.symbolic.Expression]:
    return np.array([expr])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 11:35:24