首页 > 解决方案 > 如何在numpy中展平对象数组?

问题描述

我有一个数组

np.array([[[ 1,  2], [ 3, -4]],[[-1,  0]]], dtype=object)

我想把它展平以获得类似的东西:

array([1,2,3,-4,-1,0], dtype=int32)

我尝试了Flatten numpy 数组,但它引发了一个值错误

需要明确的是,我的数组始终是一个对象数组,由多个 2D 和 1D 数组组成

标签: pythonnumpy

解决方案


In [333]: arr = np.array([[[ 1,  2], [ 3, -4]],[[-1,  0]]], dtype=object)                                       
In [334]: arr                                                                                                   
Out[334]: array([list([[1, 2], [3, -4]]), list([[-1, 0]])], dtype=object)
In [335]: arr.shape                                                                                             
Out[335]: (2,)
In [336]: np.vstack(arr)                                                                                        
Out[336]: 
array([[ 1,  2],
       [ 3, -4],
       [-1,  0]])
In [337]: np.vstack(arr).ravel()                                                                                
Out[337]: array([ 1,  2,  3, -4, -1,  0])

推荐阅读