我有一个矩阵列表:
arr = [array([[1, 2, 3], [7, 8, 9]]), array([[4, 5, 6], [0, 0, 1]])]我想用以下方式展平它们:
[[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数组展平到一定的深度?
发布于 2018-11-27 15:36:13
您应该使用重塑:
out = arr.reshape((4,3))发布于 2018-11-29 16:23:05
您需要的是numpy中的vstack函数。它接受ndarray的元组,并返回一个新的ndarray,这是垂直堆叠它们的结果,第一个ndarray在顶部,依此类推。
例如:
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函数
>>> 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函数,如下所示:
>>> np.ndarray.tolist(np.vstack(arr))
[[1, 2, 3], [7, 8, 9], [4, 5, 6], [0, 0, 1]]https://stackoverflow.com/questions/53494770
复制相似问题