2012-07-06 134 views
11

NumPy中有一种简单的方法来扁平化类型对象数组吗?拼合numpy数组

我知道.flatten()方法从变平相同的尺寸的阵列构造非对象类型数组:

I1 a = np.array([[1],[2],[3]]) 

I2 a.flatten() 
O2 array([1, 2, 3]) 
然而

,我不能得到D型=对象数组扁平:

I4 b 
O4 array([[1], [2, 3], [3]], dtype=object) 

I5 b.flatten() 
O5 array([[1], [2, 3], [3]], dtype=object) 

谢谢。

+2

的例子已经为平面,因为它可以('b.shape =(3)')!你究竟是什么意思扁平化? – 2012-07-06 17:54:14

+0

是的,但实际上,我想让b变成[1,2,3,3] – 2012-07-06 18:02:54

回答

28

如果你想[1,2,3,3],试试这个,然后

np.hstack(b) 
+1

好的。我准备发布这个(其实是完全一样的):[x for bb in b for x in bb] – 2012-07-06 18:07:23

+1

@urinieto实际上,您发布的基于列表理解的方法更快,但它可以更好地解决numpy的方式。 – nye17 2012-07-06 18:16:13

+0

20k元素的数组怎么样? – 2012-07-06 18:24:46