如何理解ndarray.reshape函数?

时间:2016-08-13 02:39:08

标签: python numpy

reshape()的原型是reshape(shape, order="C"),形状的类型是元组。 所以我们应该使用myarray.reshape((1000, 1, 32, 32))调用此函数,但我发现很多人使用myarray.reshape(1000, 1, 32, 32),为什么?

1 个答案:

答案 0 :(得分:4)

reshape方法内置了一些隐藏的灵活性。

此处的关键字必须明确:例如,您不能

myarray.reshape(1000, 1, 32, 32, "C")

您将获得TypeError,表示需要一个整数。

(事实上,即使使用元组:

myarray.reshape((1000, 1, 32, 32), "C")

引发TypeError。)

如果你查看源代码(例如,在GitHub,你会看到,在解析了关键字之后,会检查0或1个参数。在这种情况下,参数被解释为一个元组。如果有更多的参数,每个都被解释为一个整数,并组合成一个元组作为新的形状(关键字参数已被取出)。

关于你应该使用哪一个:我猜这不是一个很好的答案 你可以坚持使用文档,并使用元组 然而,多整数参数约定感觉相当明显。

坚持您或您正在使用的项目使用的惯例。不要在同一个项目中使用元组和单个整数参数。