ValueError:无法将输入数组从形状(224,224,3)广播到形状(224,224)

新手上路,请多包涵

我有一个列表说 temp_list 具有以下属性:

 len(temp_list) = 9260
temp_list[0].shape = (224,224,3)

现在,当我转换为 numpy 数组时,

 x = np.array(temp_list)

我收到错误消息:

 ValueError: could not broadcast input array from shape (224,224,3) into shape (224,224)

有人可以在这里帮助我吗?

原文由 neel 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.6k
2 个回答

列表中至少有一项不是三维的,或者它的第二维或第三维与其他元素不匹配。如果只有第一个维度不匹配,则数组仍然匹配,但作为单独的对象,不会尝试将它们协调为新的(四维)数组。一些例子如下:

也就是说,违规元素的 shape != (?, 224, 3)

ndim != 3 (其中 ? 是非负整数)。

这就是给你错误的原因。

您需要解决这个问题,以便能够将您的列表变成一个四(或三)维数组。如果没有上下文,就不可能说您是想从 3D 项目中丢失一个维度,还是向 2D 项目添加一个维度(在第一种情况下),或者更改第二个或第三个维度(在第二种情况下)。


这是错误的示例:

 >>> a = [np.zeros((224,224,3)), np.zeros((224,224,3)), np.zeros((224,224))]
>>> np.array(a)
ValueError: could not broadcast input array from shape (224,224,3) into shape (224,224)

或者,不同类型的输入,但相同的错误:

 >>> a = [np.zeros((224,224,3)), np.zeros((224,224,3)), np.zeros((224,224,13))]
>>> np.array(a)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: could not broadcast input array from shape (224,224,3) into shape (224,224)

或者,类似但带有不同的错误消息:

 >>> a = [np.zeros((224,224,3)), np.zeros((224,224,3)), np.zeros((224,100,3))]
>>> np.array(a)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: could not broadcast input array from shape (224,224,3) into shape (224)

但是以下方法将起作用,尽管结果与(可能)预期不同:

 >>> a = [np.zeros((224,224,3)), np.zeros((224,224,3)), np.zeros((10,224,3))]
>>> np.array(a)
# long output omitted
>>> newa = np.array(a)
>>> newa.shape
3  # oops
>>> newa.dtype
dtype('O')
>>> newa[0].shape
(224, 224, 3)
>>> newa[1].shape
(224, 224, 3)
>>> newa[2].shape
(10, 224, 3)
>>>

原文由 user707650 发布,翻译遵循 CC BY-SA 4.0 许可协议

是的,确实@Evert 的回答是完全正确的。另外,我想补充一个可能会遇到这种错误的场景。

 >>> np.array([np.zeros((20,200)),np.zeros((20,200)),np.zeros((20,200))])

这将是完美的。但是,这会导致 ValueError

 >>> np.array([np.zeros((20,200)),np.zeros((20,200)),np.zeros((20,201))])

ValueError: could not broadcast input array from shape (20,200) into shape (20)

列表中的 numpy 数组也必须具有相同的大小。

原文由 Jagesh Maharjan 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题