Skip to main content
 首页 » 编程设计

python之使用 2d numpy 数组切片 3d numpy 数组

2025年05月04日17jyk

是否可以使用 2d 数组对 3d 数组进行切片。我假设它可以完成,但需要您必须指定轴?

如果我有 3 个数组,这样:

A = [[1,2,3,4,5], 
     [1,3,5,7,9], 
     [5,4,3,2,1]] # shape (3,5) 
 
B1 = [[1], 
      [2], 
      [3]] # shape (3, 1)  
 
B2 = [[4], 
      [3], 
      [4]] # shape (3,1) 

是否可以像这样使用 B1 和 B2 对 A 进行切片:

Out = A[B1:B2] 

这样它会返回我:

Out = [[2,3,4,5], 
       [5, 7], 
       [2, 1]] 

或者,如果切片在 Out 中创建不同长度的数组,这将不起作用吗?

请您参考如下方法:

Numpy 针对具有固定维度的同构数字数组进行了优化,因此它不支持不同的行或列大小。

但是你可以通过使用数组列表来实现你想要的:

Out = [A[i, B1[i]:B2[i]+1] for i in range(len(B1))]