2017-07-01 4 views
1

次の問題は分かりません。私はy == 3であるXとy(両方のnumpy配列)からすべての要素を削除したいと思います。したがって、y == 3の3番目と5番目の要素があれば、3番目と5番目の要素をXとyから削除します。Numpy.deleteは3個のアイテムを削除しますが、一致する条件は2個だけです

(337L, 10000L) 
(337L, 1L) 
2 
(334L, 10000L) 
(334L, 1L) 

どのようにそれはそれは3つの要素だけで2試合の条件を削除することが可能である:

print X.shape 
print y.shape 
print len(np.where(y == 3)) 
X = np.delete(X, np.where(y == 3), axis=0) 
y = np.delete(y, np.where(y == 3), axis=0) 
print X.shape 
print y.shape 

出力は次のでしょうか?私は間違って何をしていますか?

答えて

1

私はnp.whereは、2項目のリストを返す最初の要素は3であるyの要素の行インデックスのアレイであり、2番目の要素は、それらの列インデックスである、問題は、Yが2Dであることだと思います要素。たとえば、あなたが以下のシンプルなソリューションを使用していない理由があるの長さが2

有し、明確に一つだけの要素が3つのしかしnp.where(y == 3)戻り(array([3]), array([0]))で、y = np.arange(10)[:,None]定義した場合?

X = X[y[:, 0] != 3] 
y = y[y[:, 0] != 3] 
+0

ありがとうございました。あなたの説明は役に立ちました。 – L3n95

関連する問題