2016-08-25 9 views
1

次のように我々は行列Xとターゲット列yを持っていると仮定すると:インデックスで行列の行を取得する方法は?

import numpy as np 
X = np.ones([10,2]) 
for i in range(0,X.shape[0]): 
    X[i][0] = i 
y = [0,1,2,1,0,0,1,2,3,3] 

私はyの値に応じて、Xの行を取得したいです。上記の小さな例から:Y == 0の場合

、私のようにXの行を取得したい:

:Y == 3については

[[0 1] 
[4 1] 
[5 1]] 

、私はXの行を取得したいです

[[8 1] 
[9 1]] 

など。 この問題を解決するにはどうすればよいですか?

私も

print(X[y == 0][:]) 

を試みたが、それは動作しませんでした。あなたが接近していた

答えて

0

、あなただけのリストの代わりにnumpyの配列であることをyが必要:

>>> y = np.array(y) 
>>> X[y==0] 
array([[0, 1], 
     [4, 1], 
     [5, 1]]) 

>>> X[y==3] 
array([[8, 1], 
     [9, 1]]) 
+0

Xがcoo_matrixある場合、それは動作しません。 X = scipy.io.mmread( "datafile") –

関連する問題