2017-09-02 7 views
0

numpy行列がX = np.matrix([[1, 2], [3, 4], [5, 6]])y = np.matrix([1, 1, 0])であり、y行列に基づいて2つの新しい行列X_posとX_negを作成したいとします。ですから、私の出力はX_pos == matrix([[1, 2], [3, 4]])X_neg == matrix([[5, 6]])のようになります。これどうやってするの?別の行列を使用してNumPy行列をサブセット化する

+0

彼らは行列である理由を任意の特定の理由は? –

+0

前のコードと次のコードで行列を扱うのは簡単です。 – mike

答えて

2

yのブール値マスクを作成したい場合は、これが簡単になります。ルーチンnp.ma.masked_where

mask = np.array(y).astype(bool).reshape(-1,) 
X_pos = X[mask, :] 
X_neg = X[~mask, :] 

print(X_pos) 
matrix([[1, 2], 
     [3, 4]]) 

print(X_neg) 
matrix([[5, 6]]) 
1

x = np.matrix([[1, 2], [3, 4], [5, 6]]) 
y = np.array([1, 1, 0]) 

m = np.ma.masked_where(y > 0, y) # mask for the values greater than 0 
x_pos = x[m.mask]     # applying masking 
x_neg = x[~m.mask]     # negation of the initial mask 

print(x_pos) 
print(x_neg) 
関連する問題