NumPy的flatten()可以返回一个2D数组吗?

Fra*_*urt 1 numpy

NumPy的flatten()可以返回一个2D数组吗?

我应用flatten()了一个形状的数组(12L, 54L),我得到了一个新的形状数组(1L, 648L).这应该不时发生吗?如果是这样,在哪些情况下会发生这种情况?

我使用NumPy 1.9.2.

unu*_*tbu 5

与NumPy数组不同,NumPy 矩阵始终是2D对象.所以调用flattenNumPy矩阵会返回另一个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)
Run Code Online (Sandbox Code Playgroud)

如果将矩阵转换为数组,则flatten返回1D数组:

In [125]: np.asarray(x).flatten().shape
Out[125]: (648,)
Run Code Online (Sandbox Code Playgroud)