Skip to main content
 首页 » 编程设计

python之取消嵌套 Numpy 数组

2025年05月04日12hnrainll

我有一个 pandas 系列,每个条目包含一个 numpy 数组(所有条目的长度相同),我想将其转换为 2D numpy 数组。我相信我已经读过 Series 和 DataFrames 在容纳容器时表现不佳,但长话短说,不幸的是,这就是您通过调用 np.histogram(.,.)[0] 得到的结果在一个系列中的每个组上,这就是我所追求的(直方图的分布)。

无论哪种方式,我都想从我的系列中检索一个 2D numpy 数组。目前如果我执行 my_series.values() 我会得到这个:

array([array([0, 0, 0, ..., 1, 0, 0]), array([0, 0, 0, ..., 0, 0, 0]), 
       array([0, 0, 0, ..., 0, 0, 0]), ..., array([0, 0, 0, ..., 0, 0, 0]), 
       array([0, 0, 0, ..., 0, 0, 0]), array([0, 0, 0, ..., 0, 0, 0])], dtype=object) 

this thread 中的解决方案在这里不起作用(np.array 没有自动将最终数据结构解析为二维数组)。

如何从这个数据结构中“展平”这个二维数组? (注意:result.flatten() 不成功,np.array(result) 也不成功,两者都返回原始结构)

请您参考如下方法:

使用 np.vstack 堆叠列表/数组/任何行:

>>> A = np.empty(2, dtype=object) 
>>> A[0] = array([0, 0, 0]) 
>>> A[1] = array([1, 2, 3]) 
>>> A 
array([array([0, 0, 0]), array([1, 2, 3])], dtype=object) 
>>> np.vstack(A) 
array([[0, 0, 0], 
       [1, 2, 3]])