python - numpy reshape 中的 -1 是什么意思?

标签 python numpy machine-learning

<分区>

 I have a numpy array (A) of shape = (100000, 28, 28)
 I reshape it using A.reshape(-1, 28x28)

这在机器学习管道中非常常见。 这是如何运作的 ?我一直不明白 reshape 中“-1”的含义。

一个确切的问题是 this 但没有确切的解释。有什么答案吗?

最佳答案

在 numpy 中,创建一个 100X100 项的矩阵是这样的:

import numpy as np
x = np.ndarray((100, 100))
x.shape  # outputs: (100, 100)

numpy 在内部将所有这 10000 个项目存储在一个 10000 个项目的数组中,而不管这个对象的形状如何,这允许我们将这个数组的形状更改为任何维度只要数组中的项目数量不变

例如,将我们的对象 reshape 为 10X1000 是可以的,因为我们保留了 10000 个项目:

x = x.reshape(10, 1000)

reshape 为 10X2000 不会起作用,因为我们在列表中没有足够的项目

x.reshape(10, 2000)
ValueError: total size of new array must be unchanged

所以回到-1问题,它所做的是未知维度的表示法,意思是: 让 numpy 用正确的值填充缺失的维度,以便我的数组保持相同数量的项目。

所以这样:

x = x.reshape(10, 1000)

等同于:

x = x.reshape(10, -1) 

在内部,numpy 所做的只是计算 10000/10 以获得缺失的维度。

-1 甚至可以位于数组的开头或中间。

上面两个例子等同于:

x = x.reshape(-1, 1000)

如果我们尝试将两个维度标记为未知,numpy 将引发异常,因为它不知道我们的意思,因为有不止一种方法可以 reshape 数组。

x = x.reshape(-1, -1)
ValueError: can only specify one unknown dimension

关于python - numpy reshape 中的 -1 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41776579/

相关文章:

hashmap - 使用局部敏感哈希时的余弦相似度可以为-1吗?

python - 测试数据和训练数据的列数不一样

python - 安装基线时出现问题!操作系统错误: [Errno 9] Bad file descriptor

Python 请求和流 - AttributeError : 'X509' object has no attribute '_x509'

python - PIL ImageGrab 在 Python 中捕获选定的窗口

python - 如何将整数类型数组(带有一些NaN)转换为字符串类型数组

r - kmean 中簇面积的公式

Python Pandas 从多索引数据框中的第二个索引访问值

python - 对数间隔的整数

python - 在 python 中从文本文件中读取多个变量的聪明方法