numpy数组重塑添加维度

时间:2017-01-25 12:22:32

标签: python arrays numpy reshape

好的我是(非常)新手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命令中的第3位1),但我不明白这样做了什么。形状意味着它仍然有2行4列,但显然还有其他东西被改变了。我在这里的动机再次是在R中做同样的操作,但直到我知道我明白我在这里改变了什么我才被困住了。 (请原谅我,如果这是一个非常糟糕的问题,我昨天才开始使用Python!)

2 个答案:

答案 0 :(得分:5)

通过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, :]的事情(具体用法取决于你想要的输出格式)

答案 1 :(得分:3)

有三种不同的方法可以为2D数组添加维度。

您应该尝试不同的组合来理解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]]] 的使用。请尝试以下方法:

<div id="tray">
      <div class="f-left">Business Intelligence, CIMB</div>
        <div class="f-right">
            <asp:Label ID="lblUser" Font-Size="Large" Font-Bold="true" runat="server" />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            <a href="WebLogin.aspx" runat="server" id="logout" onclick="web_logout">Log Out</a>
        </div>

</div>