2016-02-29 90 views
1

我已經檢查了numpy文檔,但是一些索引仍然沒有提到。我有一個numpy的陣列,使得它的形狀(40000,432)和它的外觀一樣的東西:Subset a 3D numpy array

arr = [[1,2,3......431,432], 
     [1,2,3......431,432], 
     [1,2,3......431,432], 
     .................... 
     [1,2,3......431,432]' 
     [1,2,3......431,432]] 

我想在一定範圍內(即20-50),這樣的形狀將是子集中的每個陣列(40000,30),它看起來像:

subarr = [[20,21,22...48,49,50], 
      [20,21,22...48,49,50], 
      [20,21,22...48,49,50], 
      ..................... 
      [20,21,22...48,49,50]] 

一切我嘗試或者返回我一個錯誤,或者給我的形狀(30,432),這是不是我所需要的。我如何沿着我想要的軸來對二維數組進行子集化?

回答

1

你想用numpyslicing

arr = np.zeros((40000, 432)) 
subarr = arr[:, 20:50] 
print(subarr.shape) 

輸出

(40000L, 30L) 

在形狀輸出的L指示整數是Python類型long的。

+0

啊,我看到我沒有正確使用逗號。我認爲這引用了所有的第一個軸? –

+0

是的,':'選擇整個第一個軸 – gtlambert