如何理解 ndarray.reshape 函数?

Asu*_*uka 3 python numpy

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

小智 5

这是该reshape方法内置的一些隐藏的灵活性。

这里的关键字需要明确:你不能这样做,例如:

myarray.reshape(1000, 1, 32, 32, "C")
Run Code Online (Sandbox Code Playgroud)

你会得到一个TypeError,表示需要一个整数。

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

myarray.reshape((1000, 1, 32, 32), "C")
Run Code Online (Sandbox Code Playgroud)

提高TypeError.)

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


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

请坚持您或您正在从事的项目使用的约定。不要在同一个项目中使用元组和单个整数参数。