NumPy的flatten()可以返回2D数组吗?
我将flatten()
应用于形状(12L, 54L)
的数组,然后我得到了一个新的形状(1L, 648L)
数组。这应该不时发生吗?如果是这样,在哪种情况下会发生这种情况?
我使用的是NumPy 1.9.2。
答案 0 :(得分:5)
与NumPy数组不同,NumPy matrices 始终是2D对象。因此,在NumPy矩阵上调用flatten
会返回另一个2D矩阵,尽管其形状为(1, N)
:
In [112]: x = np.matrix(np.random.randint(10, size=(12,54)))
In [116]: x.shape
Out[116]: (12, 54)
In [117]: x.flatten().shape
Out[117]: (1, 648)
如果将矩阵转换为数组,则flatten
将返回1D数组:
In [125]: np.asarray(x).flatten().shape
Out[125]: (648,)