如何将二维数组转换为一维数组

6
我正在尝试将一个二维数组转换为一维数组,我的代码如下:
x = np.array([[1, 2, 4], [3, 4], [1,2,3,4,5,6,7]])
x = x.flatten()

然而,我发现“flatten”函数在以下情况下运行良好:
x = np.array([[1, 2], [3, 4]])

但它在某些情况下无法正常工作

x = np.array([[1, 2, 4], [3, 4], [1,2,3,4,5,6,7]])

有人能帮我更改一下吗?

np.array([[1, 2, 4], [3, 4], [1,2,3,4,5,6,7]]) 

为了

np.array([[1, 2, 4, 3, 4, 1,2,3,4,5,6,7])

谢谢你


就在今天早些时候,有一个关于展平的问题 - https://stackoverflow.com/questions/52970017/flatten-numpy-array-with-python。关键点是你的 x 不是二维的,它是一维的!如果你不相信,请检查它的 shape。它是一个由列表组成的对象dtype数组。 - hpaulj
可能是使用Python展平NumPy数组的重复问题。 - Dani Mesejo
@PaulRooney,你的链接都是关于reshape的,而flatten试图做的是不同的。这在这里不适用。 - hpaulj
3个回答

7
你可以尝试使用“concatenate”(numpy文档),它可以帮助你实现此目的。
flatten_x = np.concatenate(x)

我遇到了“AttributeError: 'list' object has no attribute 'concatenate'”的错误。 - t7e
你能在调用 concatenate 之前尝试使用 np.array(x)x 转换为 numpy 数组吗? - niraj

1
t = [[4, 9, 2], [3, 5, 7], [8, 1, 5]]
arr_t=[]
for a in t:
    arr_t+=a

-1
请使用以下简单的代码。
import numpy as np

x = np.array([[1, 2, 4], [3, 4], [1,2,3,4,5,6,7]])
y = sum(x.tolist(),[])
print(np.array(y))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接