2017-07-31 15 views
0

から行を抽出私はPythonのnumpyの:配列

t = T[153,:] 

を用いnumpyのアレイから列を抽出しようとしているしかし、私はここでTのサイズが(17576、31)であることを発見しています、 tのサイズは(31、) - サイズが一致しません。

寸法(、31)または(1,31)を私の機能に入力できるようにするには、tが必要です。私は転位を取ろうとしましたが、うまくいきませんでした。

誰かが簡単な問題ですべきことを教えてもらえますか?

感謝

答えて

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%の慣用的です。もちろん

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

は、我々が通常の1-D配列に同じものを参照してください:あなたがリストをスライスするときにPythonでリストしたときにインデックスを取得し、あなたが何を得るのかについて考えてみ

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

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

形状はこの違いを反映:

そしてのでそれは我々が同様に2次元配列で同じものを見たいという理にかなっています

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