在Matlab中,我能做到以下幾點:簡單的方法來摺疊numpy數組的尾部尺寸?
X = randn(25,25,25);
size(X(:,:))
ans =
25 625
我經常發現自己想要迅速崩潰數組的尾部尺寸,不知道如何在numpy的做到這一點。
我知道我能做到這一點:
In [22]: x = np.random.randn(25,25,25)
In [23]: x = x.reshape(x.shape[:-2] + (-1,))
In [24]: x.shape
Out[24]: (25, 625)
但x.reshape(x.shape[:-2] + (-1,))
是很多不夠簡明(和需要大約x
詳細信息),比簡單地做x(:,:)
。
我明明試過類似numpy的索引,但希望不工作:
In [25]: x = np.random.randn(25,25,25)
In [26]: x[:,:].shape
Out[26]: (25, 25, 25)
如何崩潰數組的尾部尺寸以簡潔的方式任何提示?
編輯:請注意,我是在產生的數組本身之後,而不僅僅是它的形狀。在上面的例子中,我只使用size()
和x.shape
來表示數組是什麼樣的。
在附註中,您的示例不正確......'x.shape [: - 2]'會產生一個空元組。 (給它加'-1'意味着該數組將被「扁平化」成15625長度的數組)。我猜你的意思是'x.shape [0]'? –
@JoeKington:它*是*正確的(嘗試它)。 'x.shape [: - 2]'返回'x.shape'直到(但不包括)倒數第二個元素。所以對於一個3D數組'x',它只返回'x.shape'的第一個元素。我使用'[:-2]'而不是'[0]',因爲我正在尋找一種適用於N> 2的所有ND陣列的通用解決方案。 – EelkeSpaak
@ElkeSpaak - 對。我沒有清楚地思考。 –