2017-07-31 108 views
0

提取一排我試圖使用的Python numpy的:從陣列

t = T[153,:] 

一個numpy的陣列中提取的行但我發現,其中的T的大小是(17576,31), t的尺寸是(31,) - 尺寸不匹配!

我需要t具有尺寸(,31)或(1,31),以便我可以將其輸入到我的函數中。我嘗試過轉置,但沒有奏效。

任何人都可以幫助我什麼應該是一個簡單的問題?

非常感謝

回答

3

您可以用切片的符號提取該行:

t = T[153:154,:] # will extract row 153 as a 2d array 

T = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]]) 

T[1,:] 
# array([5, 6, 7, 8]) 

T[1,:].shape 
# (4,) 

T[1:2,:] 
# array([[5, 6, 7, 8]]) 

T[1:2,:].shape 
# (1, 4) 
+1

非常感謝你,這是我從Matlab找到轉換困難的區域類型 – jlt199

2

雖然這看起來奇怪,它實際上是100%的地道。想想你所得到的,當你的索引Python中的列表,你會得到什麼,當你切的列表:

>>> l = list(range(10)) 
>>> l[4] 
4 
>>> l[4:5] 
[4] 

當然,我們看到同樣的事情在一個普通的1-d數組:

>>> a = numpy.arange(10) 
>>> a[4] 
4 
>>> a[4:5] 
array([4]) 

就這樣,按理說,我們會看到一個2-d陣列同樣的事情還有:

>>> a = numpy.arange(25).reshape(5, 5) 
>>> a[4] 
array([20, 21, 22, 23, 24]) 
>>> a[4:5] 
array([[20, 21, 22, 23, 24]]) 

形狀反映了這種差異:

>>> a[4].shape 
(5,) 
>>> a[4:5].shape 
(1, 5)