Flatten numpy array with sub-arrays of different dimensions

Gab*_*iel 5 python arrays numpy

这似乎很简单,但是我还没有找到如何使用来做的事情numpy。考虑示例数组:

import numpy as np
aa = np.array([np.array([13.16]), np.array([1.58 , 1.2]), np.array([13.1]), np.array([1. , 2.6])], dtype=object)
Run Code Online (Sandbox Code Playgroud)

我需要一种通用的方法,使用将该数组展平为单个N元素数组N=every float in all the sub-arrays。在这种情况下,它将是:

aa = np.array([13.16, 1.58 , 1.2, 13.1, 1. , 2.6])
Run Code Online (Sandbox Code Playgroud)

我试过了np.ndarray.flatten()(尝试了所有的“ order”选项),但是我又得到了相同的不变aa数组。

为什么np.ndarray.flatten()不工作,我该怎么做?

解决方案应该尽可能通用,因为aa我在这里使用的示例数组实际上将在我的真实代码中填充不同长度的子数组。

Cor*_*mer 7

您可以使用 numpy.hstack

>>> np.hstack(aa)
array([13.16,  1.58,  1.2 , 13.1 ,  1.  ,  2.6 ])
Run Code Online (Sandbox Code Playgroud)

  • @Gabriel `np.ndarray.flatten()` 正在工作。`flatten` 从一个 ndarray 返回一个一维数组。`aa.ndim` 已经是 1,所以 flatten 没有什么可以改变的。`aa` 具有数据类型对象,因此 numpy 不知道也不关心它是否包含数组。您想要做的是告诉 numpy 将 `aa` 的每个元素视为一个数组,并将它们连接到一个数据类型为 float 的新数组中,这就是这个答案的作用。 (2认同)