2017-05-08 9 views
1

2D点(x、y)を記述する2つの配列x=[1,2,3,4]y=[1,0,0,1]があります。いくつの要素があるか知りたいですx>2y==1です。これを行う最も簡単な方法は何ですか(ループなし)。 x[x>2]のようにすることはできますか?2D空間のPythonフィルタポイント

答えて

2

あなたx[x>2]がnumpyの構文であることから、これらは、numpyの配列であると仮定すると、あなただけのと(&)演算子必要があります:xyがポイントとして一緒に属している場合は、あなたがにそれらをパックしたい場合があります

meet_cond = (x > 2) & (y == 1) 
how_many = meet_cond.sum() 

which_x = x[meet_cond] 
which_y = y[meet_cond] 
+0

非常にクールです。 'meet_cond'がどのように見えるかは興味深いかもしれません。 –

0

をa np 2D配列:

>>> import numpy as np 
>>> x = np.array([1, 2, 3, 4]) 
>>> y = np.array([1, 0, 0, 1]) 
>>> xy = np.array([x, y]).T 
>>> xy[(x > 2) & (y == 1)] 
array([[4, 1]]) 
>>> xy[(xy[:, 0] > 2) & (xy[:, 1] == 1)] 
array([[4, 1]]) 
>>> np.count_nonzero((xy[:, 0] > 2) & (xy[:, 1] == 1)) 
1 
関連する問題