reshape()
的原型是reshape(shape, order="C")
,形状的类型是元组。
所以我们应该使用myarray.reshape((1000, 1, 32, 32))
调用此函数,但我发现很多人使用myarray.reshape(1000, 1, 32, 32)
,为什么?
答案 0 :(得分:4)
reshape
方法内置了一些隐藏的灵活性。
此处的关键字必须明确:例如,您不能:
myarray.reshape(1000, 1, 32, 32, "C")
您将获得TypeError
,表示需要一个整数。
(事实上,即使使用元组:
myarray.reshape((1000, 1, 32, 32), "C")
引发TypeError
。)
如果你查看源代码(例如,在GitHub,你会看到,在解析了关键字之后,会检查0或1个参数。在这种情况下,参数被解释为一个元组。如果有更多的参数,每个都被解释为一个整数,并组合成一个元组作为新的形状(关键字参数已被取出)。
关于你应该使用哪一个:我猜这不是一个很好的答案 你可以坚持使用文档,并使用元组 然而,多整数参数约定感觉相当明显。
坚持您或您正在使用的项目使用的惯例。不要在同一个项目中使用元组和单个整数参数。