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

为何numpy.testing.assert_array_equal对相同嵌套ragged数组校验失败

你遇到的是NumPy的正常设计行为,核心原因与object类型数组的元素比较逻辑有关,具体解释如下:

1. 不同场景的行为差异原因

  • 普通等长内部数组校验通过:当内部数组形状一致时,np.testing.assert_array_equal对object元素执行==比较会返回布尔数组,工具会自动判断该布尔数组是否全为True,因此内容一致时会判定相等。
  • ragged数组校验失败:当内部数组形状不一致时,两个不同数组对象执行==比较会触发广播错误,NumPy的校验工具捕获到该异常后会直接判定两个元素不相等,因此即使打印内容完全一致也会抛出断言错误。
  • 引用赋值后校验通过:如果两个数组的元素是同一个对象引用,校验工具会优先用is做身份判断,身份一致时直接返回相等,不会触发后续的值比较逻辑,因此不会报错。

2. 适配ragged数组的校验方案

如果你需要对嵌套的ragged object数组做内容相等校验,可以改用逐元素调用np.array_equal的方式实现:

x = np.array([np.array(['a', 'b']), np.array(['c'])], dtype='object')
y = np.array([np.array(['a', 'b']), np.array(['c'])], dtype='object')
# 逐元素校验内容相等
assert all(np.array_equal(x_item, y_item) for x_item, y_item in zip(x, y))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 19:24:07