2012-03-30 5 views
-1

特定の範囲のデータセットのx、y、z列に何が含まれているかを数えるコードの部分があります。私がしたいのは、x、y、zの値だけを数えることです。基本的に私がしようとしているのは、コードボックスに3Dボックスの値の数を数えることです。どのようにして以下のように変更できますか?事前にありがとうボックス内の要素数をカウントする

Sx = ((min <= X) & (X <= max)).sum() #count what is in x range 
Sy = ((min <= Y) & (Y <= max)).sum() #count what is in y range 
Sz = ((min <= Z) & (Z <= max)).sum() #count what is in z range 
+3

DOYあなたは、これらすべての条件が同時に保持したいですか?一緒にちょうど '&'。 –

+0

@Svenその簡単ですか?ありがとうございました! – Surfcast23

+1

ブーリアンではうまく動作しますが、実際には論理的な 'と'を意味し、ビット単位の '&'ではありません。 –

答えて

2

ないことを確認これは本当に何をしたいですが、とにかく場合:

count = ((min < X) & (X < max) & 
     (min < Y) & (Y < max) & 
     (min < Z) & (Z < max)).sum() 
+0

こんにちはSven、私はそれらを一緒に 'sum()'関数がx、y、zに共通の値がある時間の数を数えているようです。値を数えるにはどうしたらいいですか?たとえば、minを1に設定し、maxを2に設定し、 '[0 0 0]、[1 1 2]、および[2 1 2]'合計で2を与えます。それを行う方法はありますか?また、このようなものについての良いチュートリアルに向けて私を指摘することができますか? – Surfcast23

+0

私はこれがどのように「6」になるのか分かりません(上記のコードは、「0」を与えます)。あなたの質問から 'Sx'、' Sy'と 'Sz'の合計を探していますか?はいの場合は、追加してください。 –

+0

「[0 0 0]」が最初の行だった行列に関して考えていた私の悪い表記についてお詫び申し上げます。私はX = [0 1 2]、Y = [0 1 1]、Z = [0 2 2]の3つの配列を持ち、6以上の値が1以上で、 2以下です。私が思うに、和関数は、X、Y、Zがこの範囲にあるセットを数えます。 – Surfcast23

2

片方向は&すべての3つの条件を一緒にしています。また

minmaxは、あなたがそうのようnp.minimum()np.maximum()を使用することができ、すべての3つの次元で同じですので、:

((min < np.minimum(X, Y, Z)) & (np.maximum(X, Y, Z) < max)).sum() 

P.S. minmaxには、thebuiltinsをシャドウしないように何か他のものを呼び出すことをおすすめします。それでも

+0

ありがとうAix私はそれを変更します – Surfcast23

関連する問題