我需要做的是将2D矩阵扩展到3D,并在第三个轴上填充任意数量的零。返回的错误为:
所有输入数组必须具有相同的维数,但索引0处的数组具有3维,而索引1处的数组具有0维
我应该改正什么?
import numpy as np
kernel = np.ones((3,3)) / 9
kernel = kernel[..., None]
print(type(kernel))
print(np.shape(kernel))
print(kernel)
i = 1
for i in range(27):
np.append(kernel, 0, axis = 2)
print(kernel)
2条答案
按热度按时间vmjh9lq91#
使用
concatenate()
:但最好在第三维中生成已具有所需形状的
append_values
数组,以避免循环:oug3syen2#
看看输出和错误--完整的错误,而不仅仅是一件!
如
shape
所示,kernel
是3D(3,3,1)。np.append
获取标量0,生成数组np.array(0)
,并调用concatenate
。如果你花时间阅读它的文档,concatenate
需要匹配的维度数量。但我对您的代码的主要不满是您使用了
np.append
而没有捕获结果。同样,如果您花时间阅读文档,您会意识到np.append
不能就地工作。它不修改kernel
。当它工作时,它返回一个新的数组。而在一个循环中重复这样做是低效的。看起来您采用了List Append模型,不假思索地将其应用于数组。这不是
numpy
的编码方式。如另一个答案所示,如果您想要生成一个(3,3,28)数组,那么对(3,3,27)个0数组执行一次
concatenate
是可行的。或者,制作一个0的(3,3,28)数组,并将1(3,3,1)数组复制到适当的列。