繁体   English   中英

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列的2D数组。 我很高兴。 这行代码产生了混乱:

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命令中的第三个数字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, :] (具体用法取决于你想要的输出格式到是)

将维度添加到2D阵列有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]]]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM