What does -1 in numpy reshape mean?
本问题已经有最佳答案,请猛点这里访问。
1 2 | I have a numpy array (A) of shape = (100000, 28, 28) I reshape it using A.reshape(-1, 28x28) |
这在机器学习管道中非常普遍。
这是如何运作的 ? 我从不了解重塑中的" -1"的含义。
一个确切的问题是
但没有确切的解释。 有什么答案吗?
在numpy中,创建一个100X100项的矩阵,如下所示:
1 2 3 | import numpy as np x = np.ndarray((100, 100)) x.shape # outputs: (100, 100) |
numpy在内部将所有这10000个项目存储在10000个项目的数组中,而与该对象的形状无关,这使我们可以将此数组的形状更改为任意尺寸,只要该数组上的项目数不变
例如,将对象重塑为10X1000就可以了,因为我们保留了10000个项目:
1 | x = x.reshape((10, 1000)) |
重塑为10X2000无法正常工作,因为列表中没有足够的项目
1 2 | x.reshape((10, 2000)) ValueError: total size of new array must be unchanged |
回到
让numpy用正确的值填充缺失的维度,以便我的数组保留相同数量的项目。
所以这:
1 | x = x.reshape((10, 1000)) |
等效于此:
1 | x = x.reshape((10, -1)) |
在内部,numpy所做的只是计算
以上两个示例与此等效:
1 | x = x.reshape((-1, 1000)) |
如果我们尝试将二维标注为未知,则numpy将引发异常,因为它不知道我们的意思,因为有多种方法可以改变数组的形状。
1 2 | x = x.reshape((-1, -1)) ValueError: can only specify one unknown dimension |
这意味着,将推断您传递了
1 | A.reshape(-1, 28*28) |
意思是,"重塑
请参阅重塑文档。