首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将矩阵数组展平为单个矩阵(python)

将矩阵数组展平为单个矩阵(python)
EN

Stack Overflow用户
提问于 2018-11-27 15:34:05
回答 2查看 340关注 0票数 0

我有一个矩阵列表:

代码语言:javascript
运行
复制
arr = [array([[1, 2, 3], [7, 8, 9]]), array([[4, 5, 6], [0, 0, 1]])]

我想用以下方式展平它们:

代码语言:javascript
运行
复制
[[1, 2, 3], [7, 8, 9], [4, 5, 6], [0, 0, 1]]

numpy.flatten将其展平为单个数字数组。我试过这样:flattened_list = [y for x in arr for y in x]它做了这个工作,但是矩阵的所有行都是numpy数组。有没有办法把numpy数组展平到一定的深度?

EN

回答 2

Stack Overflow用户

发布于 2018-11-27 15:36:13

您应该使用重塑:

代码语言:javascript
运行
复制
out = arr.reshape((4,3))
票数 0
EN

Stack Overflow用户

发布于 2018-11-29 16:23:05

您需要的是numpy中的vstack函数。它接受ndarray的元组,并返回一个新的ndarray,这是垂直堆叠它们的结果,第一个ndarray在顶部,依此类推。

例如:

代码语言:javascript
运行
复制
import numpy as np

>>> a = np.array([1, 2])
>>> b = np.array([3, 4])
>>> c = np.array([5, 6])
>>> np.vstack(a, b)
array([[1, 2],
       [3, 4],
       [5, 6]])

在本例中,您可以很容易地调用ndarray列表上的tuple函数

代码语言:javascript
运行
复制
>>> arr = [array([[1, 2, 3], [7, 8, 9]]), array([[4, 5, 6], [0, 0, 1]])]
>>> np.vstack(tuple(arr))
array([[1, 2, 3],
       [7, 8, 9],
       [4, 5, 6],
       [0, 0, 1]])

如果你想要你的答案是一个python列表,那么只需对结果调用numpy的ndarray.tolist函数,如下所示:

代码语言:javascript
运行
复制
>>> np.ndarray.tolist(np.vstack(arr))
[[1, 2, 3], [7, 8, 9], [4, 5, 6], [0, 0, 1]]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53494770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档