好吧,我是一个(非常)新手 Python 用户,但我正在尝试将一段 Python 代码翻译成 R,但我遇到了一个令人困惑的数组 reshape 问题。
让我们制作一些示例数据:
X1 = np.array([[-0.047, -0.113, 0.155, 0.001],
[0.039, 0.254, 0.054, 0.201]], dtype=float)
In:X1
Out:
array([[-0.047, -0.113, 0.155, 0.001],
[0.039, 0.254, 0.054, 0.201]])
In:X1.shape
Out: (2,4)
好的,我制作了一个 2 行 4 列的二维数组。我对此很满意。这行代码引起了混淆:
X2 = X1.reshape((2, -1, 1))
In: X2
Out:
array([[[-0.047],
[-0.113],
[0.155],
[0.001]],
[0.039],
[0.254],
[0.054],
[0.201]]])
In: X2.shape
Out: (2, 4, 1)
所以我知道我添加了一个额外的维度(我认为是 reshape 命令中的第 3 个数字 1
),但我不明白这还做了什么。形状暗示它仍然有 2 行和 4 列,但显然其他东西发生了变化。我在这里的动机再次是在 R 中执行相同的操作,但直到我知道我明白我在这里转换的内容之前,我被困住了。 (如果这是一个可怕的问题,请原谅我,我昨天才开始学习 Python!)
最佳答案
通过 reshape(2, -1, 1)
您不仅添加了一个新维度。你说过
* the 1st dimension should be of size 2
* the 3rd dimension should be of size 1
* the 2nd should be whatever remains
因此,唯一有效的选项是 4。如果您只想向现有矩阵添加新维度,您应该执行类似 x[:, np.newaxis, :]
的操作(确切用法取决于你想要的输出格式)
关于python - numpy 数组 reshape 添加维度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41851559/