numpy 数组重塑添加维度
numpy array reshape adding dimension
好吧,我是一个(非常)新手 Python 用户,但我正在尝试将一段 Python 代码翻译成 R,但我 运行 遇到了一个令人困惑的问题与数组重塑。
让我们制作一些示例数据:
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)
所以我知道我添加了一个额外的维度(我认为这是重塑命令中的第 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, :]
的操作(具体用法取决于您希望输出格式是)
有 3 种不同的方法可以向二维数组添加维度。
您应该尝试不同的组合来理解 reshape
的用法。尝试以下操作:
import numpy as np
X1 = np.array([[-0.047, -0.113, 0.155, 0.001],
[0.039, 0.254, 0.054, 0.201]], dtype=float)
X2 = X1.reshape((1, 2, -1))
print(X2)
>[[[-0.047 -0.113 0.155 0.001]
[ 0.039 0.254 0.054 0.201]]]
X3 = X1.reshape((-1, 1, 2))
print(X3)
>[[[-0.047 -0.113]]
[[ 0.155 0.001]]
[[ 0.039 0.254]]
[[ 0.054 0.201]]]
好吧,我是一个(非常)新手 Python 用户,但我正在尝试将一段 Python 代码翻译成 R,但我 运行 遇到了一个令人困惑的问题与数组重塑。
让我们制作一些示例数据:
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)
所以我知道我添加了一个额外的维度(我认为这是重塑命令中的第 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, :]
的操作(具体用法取决于您希望输出格式是)
有 3 种不同的方法可以向二维数组添加维度。
您应该尝试不同的组合来理解 reshape
的用法。尝试以下操作:
import numpy as np
X1 = np.array([[-0.047, -0.113, 0.155, 0.001],
[0.039, 0.254, 0.054, 0.201]], dtype=float)
X2 = X1.reshape((1, 2, -1))
print(X2)
>[[[-0.047 -0.113 0.155 0.001]
[ 0.039 0.254 0.054 0.201]]]
X3 = X1.reshape((-1, 1, 2))
print(X3)
>[[[-0.047 -0.113]]
[[ 0.155 0.001]]
[[ 0.039 0.254]]
[[ 0.054 0.201]]]