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

Numpy创建数组报错TypeError: Field elements must be 2- or 3-tuples

报错原因

你的报错来自内层np.array()的参数写法错误:

  • np.array()接收的第一个位置参数是待转换的数组序列,第二个位置参数是可选的数据类型指定参数
  • 你写的np.array([(delta_B / delta_theta) + Db], [(delta_R / delta_theta) + Dr])把第二个计算值单独放在第二个列表里,作为第二个参数传给了np.array(),Numpy会把这个参数识别为结构化数组的字段定义,要求传入2/3元组,实际拿到的是数值,就抛出了对应的TypeError。
修正方案
  1. 把两个要放入数组的计算值放在同一个列表里,作为np.array()的第一个参数,即把[a], [b]的写法改成[a, b]
  2. 去掉外层多余的一层方括号,避免生成不必要的额外维度
  3. (可选)把公共的乘法系数抽离出来,提升代码可读性

修正后的完整可运行代码:

import numpy as np

arr = np.array([[3, 5, 9], [1, 2, 3]]).T
Dr = 2
Dl = 3
Db = 4

delta_R = arr[0, 0]
delta_L  = arr[1, 0]
delta_B = arr[2, 0]
delta_theta = (delta_L - delta_R) / (Dr + Dl)

common_coeff = 2 * np.sin(delta_theta / 2)
delta_x_delta_y_arr = common_coeff * np.array([
    (delta_B / delta_theta) + Db,
    (delta_R / delta_theta) + Dr
])
校验说明

用你给出的初始变量值计算:

  • delta_theta = (5-3)/(2+3) = 0.4
  • 公共系数2*np.sin(0.2) ≈ 0.3973
  • 第一个分量(对应Δx)计算值约为0.3973*(9/0.4 +4) ≈ 10.53
  • 第二个分量(对应Δy)计算值约为0.3973*(3/0.4 +2) ≈ 3.77
    和目标位移计算公式逻辑完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 21:06:28