2016-10-07 5 views
2

Python/numpyの行列で列ベクトルをインデックスし、1D配列ではなく列ベクトルとして返したいと思います。Pythonの行列から列ベクトルを選択する

np.transpose(x[:,1])

与える

x = np.array([[1,2],[3,4]]) 
x[:,1] 
>array([2, 4]) 

は解決策ではありません。 numpy.transposeのドキュメントに続いて、行ベクトル(1-D配列)が返されます。

答えて

4

いくつかのオプション -

x[:,[1]] 
x[:,None,1] 
x[:,1,None] 
x[:,1][:,None] 
x[:,1].reshape(-1,1) 
x[None,:,1].T 
+0

感謝。 'x [:、[1]]'が 'x [:、1]'で動かないのはなぜですか? – tomka

+1

@tomka '[1]'というインデックス付けでは、基本的にただ一つの要素だけを含むインデックスのリストを渡しているので、そのまま次元を保持します。スカラーであるインデックスとして「1」を用いると、そのインデックス化軸に沿って次元数が減少し、スライスのぼやけの数は1つ少なくなります。私はこれに関する役に立つリンクを見つけました:https://scipy.github.io/old-wiki/pages/Cookbook/Indexing – Divakar

関連する問題