Skip to main content
 首页 » 编程设计

python之形状不等的 Numpy 堆栈

2025年05月04日15yjmyzz

我注意到 combining 2D arrays to 3D arrays 的解决方案通过 np.stack、np.dstack 或简单地传递数组列表仅在数组具有相同的 .shape[0] 时有效。

例如,假设我有:

print(arr) 
[[0 1] 
 [2 3] 
 [4 5] 
 [6 7] 
 [8 9]] 

很容易到达:

print(np.array([arr[2:4], arr[3:5]])) # same shape 
[[[4 5] 
  [6 7]] 
 
 [[6 7] 
  [8 9]]] 

但是,如果我传递一个长度不等的数组列表,我会得到:

print(np.array([arr[:2], arr[:3]])) 
[array([[0, 1], 
       [2, 3]]) 
 array([[0, 1], 
       [2, 3], 
       [4, 5]])] 

我怎样才能简单地:

[[[0, 1] 
  [2, 3]] 
 [[0, 1] 
  [2, 3] 
  [4, 5]]] 

我尝试过的:一些其他的 Array manipulation routines .

注意:最终想要对超过 2 个数组执行此操作,因此 np.append 可能并不理想。

请您参考如下方法:

Numpy 数组必须是矩形的,因此使用 numpy 数组无法获得您想要获得的结果。

你需要一个不同的数据结构。哪一个合适取决于您要对这些数据做什么。