python - 将不同列长度的 numpy 矩阵的条目放入一维数组中

标签 python arrays python-2.7 numpy

我正在使用 Python 工作。我有一个长度为 L 的 numpy 数组,称为“arr”,arr = np.empty(L, dtype = object) ,其中 arr 的每个条目都包含另一个 numpy 数组,但每个条目都有一个不同的长度(这就是我使用 dtype = object 的原因)。现在我想最有效地获取 arr 中包含的每个条目并将其放入一个大的一维 numpy 数组中。换句话说,我想要一个带有 array([arr[0,0], arr[0,1], arr[0,2], ... , arr[1,0], arr[0,1], ...]) 在此特定顺序中。有关如何在 Pyhton 中编写此内容的任何帮助。

最佳答案

听起来您想展平嵌套列表。也就是说,数组的数组实际上是列表的列表。有一个标准的 Python 习惯用法,itertools.chain:

制作一个数组的示例数组:

In [828]: arr = np.array([np.arange(i) for i in range(1, 5)])
In [829]: arr
Out[829]: array([array([0]), array([0, 1]), array([0, 1, 2]), array([0, 1, 2, 3])], dtype=object)

导入并使用链。 *arr 扩展 arr 就好像它是一个列表:

In [830]: from itertools import chain
In [831]: list(chain(*arr))
Out[831]: [0, 0, 1, 0, 1, 2, 0, 1, 2, 3]
In [832]: np.array(_)
Out[832]: array([0, 0, 1, 0, 1, 2, 0, 1, 2, 3])

但是数组列表描述还表明我们可以使用np.concatenate(或np.hstack):

In [837]: np.concatenate(arr)
Out[837]: array([0, 0, 1, 0, 1, 2, 0, 1, 2, 3])

concatenate采用一个“列表”,例如并将它们连接起来(在唯一的轴上)。

In [841]: list(arr)
Out[841]: [array([0]), array([0, 1]), array([0, 1, 2]), array([0, 1, 2, 3])]

关于python - 将不同列长度的 numpy 矩阵的条目放入一维数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44102261/

相关文章:

python - tensorflow 首次运行问题

python - 使用 Python 将阿拉伯语或任何从右到左的书写系统字符串打印到 Linux 终端

c - 赋值给数组类型错误的表达式

javascript - 如何移动数组中的一组项目?

python-2.7 - 使用 pandas : apply(pd. 系列中的列表不起作用 - 有替代解决方案吗?

python - 检查python中两个字符串之间的交集

python - pytables中的 "select max(column) from table"相当于什么

C可扩展数组

python pandas 逐列计算平均值

python - 在 Kivy 中创建全局变量