gpt4 book ai didi

python - 将元素形成 numpy 数组作为另外两个 numpy 数组时出现广播错误

转载 作者:行者123 更新时间:2023-12-01 01:48:14 25 4
gpt4 key购买 nike

我正在尝试生成一个 numpy 数组,其元素作为另外两个 numpy 数组,如下所示。

W1b1 = np.zeros((256, 161))
W2b2 = np.zeros((256, 257))
Wx = np.array([W1b1, W2b2], dtype=np.object)

这会产生错误:

ValueError: could not broadcast input array from shape (256,161) into shape (256).

但是,如果我为 W1b1 和 W2b2 采用完全不同的尺寸,那么我不会收到错误,如下所示。

A1 = np.zeros((256, 161))
A2 = np.zeros((257, 257))
A3 = np.array([A1, A2], dtype=np.object)

我不明白第一个代码中有什么问题以及为什么 numpy 数组试图广播其中一个输入数组。

我尝试过以下版本(Python 2.7.6,Numpy 1.13.1)和(Python 3.6.4,Numpy 1.14.1)。

最佳答案

不要指望np.array(..., object) 生成正确的对象数组。目前我们无法控制它的尺寸。可以想象,它可以创建一个 (2,) 数组,或 (2, 256) (具有 1d 内容)。有时它有效,有时会引发错误。有某种模式,但我还没有看到对代码的分析来准确显示正在发生的情况。

现在分配数组并填充它更安全:

In [57]: arr = np.empty(2, object)
In [58]: arr[:] = [W1b1, W2b2]

np.array([np.zeros((3,2)),np.ones((3,4))], object) 也会引发此错误。因此,当第一个维度匹配但后面的维度不匹配时,就会出现错误。现在想起来,我以前见过这个错误。

关于该主题的早期 SO 问题

numpy array 1.9.2 getting ValueError: could not broadcast input array from shape (4,2) into shape (4)

Creation of array of arrays fails, when first size of first dimension matches

Creating array of arrays in numpy with different dimensions

关于python - 将元素形成 numpy 数组作为另外两个 numpy 数组时出现广播错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51005699/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com