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

LabVIEW Python集成工具包Error91:二维数组处理无效值问题排查

排查LabVIEW Python集成中二维数组无效值与Error91的问题

Error91的本质是变体包含的数据类型和你请求转换的LabVIEW数据类型不匹配,结合你用pandas DataFrame处理后返回numpy.ndarray的场景,我整理了几个最可能的原因和对应的排查方向:

1. numpy数组的类型与LabVIEW预期不匹配

  • 如果你在LabVIEW的「变体转数据」里指定了二维DBL数组,但Python返回的numpy数组是int32/uint64这类非浮点类型,或者是object类型(比如DataFrame里有混合类型的列,比如数值+字符串),LabVIEW根本无法将其解析成目标类型,直接触发Error91。
  • 排查方法:在Python代码里加一行print(df.values.dtype),看输出的类型是不是和LabVIEW要转换的类型对应(比如float64对应DBL,int32对应I32)。如果是object类型,说明DataFrame里有非数值列,要么清理数据,要么强制转成统一数值类型:
    # 强制转成float64类型
    result_arr = df.values.astype(np.float64)
    

2. numpy数组的维度/形状不符合预期

  • 如果你处理后的DataFrame是空的,或者返回的是一维数组(比如shape=(n,)),LabVIEW尝试把它转成二维数组时就会得到无效值或触发错误。另外,numpy默认是行优先(C顺序),而LabVIEW是列优先(Fortran顺序),虽然这不会直接导致无效值,但可能会让数据排列顺序错乱,也容易被误认为是无效值。
  • 排查方法:在Python里打印数组形状print(df.values.shape),确认是(行数, 列数)的二维结构。如果是一维,就用reshape转成二维:
    # 转成n行1列的二维数组
    result_arr = df.values.reshape(-1, 1)
    
    如果是顺序问题,可以转成LabVIEW兼容的列优先布局:
    result_arr = np.asfortranarray(df.values)
    

3. numpy数组包含特殊数值(NaN/Inf)

  • 虽然LabVIEW的DBL类型支持NaN,但在变体传递过程中,numpy的NaN/Inf可能会被解析成LabVIEW无法识别的无效值。尤其是当你用旧版本的LabVIEW Python工具包时,这个问题更常见。
  • 解决方法:在返回前把特殊值替换成合法数值:
    # 把NaN替换成0,Inf替换成一个极大值
    result_arr = np.nan_to_num(df.values, nan=0.0, posinf=1e10, neginf=-1e10)
    

4. LabVIEW变体转数据的配置错误

  • 你可能在「变体转数据」函数里选错了目标类型,比如明明要转二维数组,却选了一维;或者数组的维度大小和返回的numpy数组不匹配(比如你指定了固定大小的二维数组,但返回的数组行数/列数不一样)。
  • 排查方法:确认「变体转数据」的类型端子是二维数组(可变大小),而不是固定大小的数组,并且类型和numpy数组的dtype严格对应。

内容的提问来源于stack exchange,提问作者小野寺翔

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:45:45