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

时间:2016-02-28 00:50:32

标签: python numpy

我正在使用python 3.5并尝试将二维列表广播到一个3d列表中。

ValueError: could not broadcast input array from shape (10,10) into shape (10,18)

以下是我使用的代码生成错误

v_level =4
M=16
n_down = M/2
n_down0 = M
residual_h_to_2h = np.zeros((v_level,M+2,M+2))
residual_h_to_2h[q][0:n_down+2][0:n_down+2] = restrict(residual_h[0:n_down0+2][0:n_down0+2])

形状(0,18)对应于residual_h_to_2h。函数restrict返回形状列表((M / 2)+ 2,(N / 2)+2),其中(M,N)是输入列表的形状。

我无法理解为什么residual_h_to_2h [q] [0:n_down + 2] [0:n_down + 2]的形状报告为10,18。它应该是10,10。

我似乎无法独自解决此问题。任何帮助或相关文档的链接将不胜感激。

1 个答案:

答案 0 :(得分:3)

是的,现在我明白了。

用三个维度正确切片:

linesStillRemaining

<强>为什么吗

在使用residual_h_to_2h[q,0:n_down+2,0:n_down+2].shape (10, 10) 时,您正在使用相同的维度进行切片。原来的ndarray:

0:ndown+2

第一级是标量,它减少了维度:

residual_h_to_2h.shape
(4, 18, 18)

第二级是切片,它不会减小尺寸,因此它们实际上是相同且相同的:

residual_h_to_2h[q].shape
(18, 18)

如果没有residual_h_to_2h[q][0:n_down+2][0:n_down+2].shape (10, 18) residual_h_to_2h[q][0:n_down+2].shape (10, 18) a,但aa数组,则更容易发现:

b