好的我是(非常)新手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!)
答案 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" />
<a href="WebLogin.aspx" runat="server" id="logout" onclick="web_logout">Log Out</a>
</div>
</div>