2016-10-09 9 views
0

2つの乱数配列XYがあります。 Xはx座標を表し、Yはy座標を表します。私は1、配列内の値でフィルタリングする方法を知っているが、私は2を使用する必要があるため、私は何をすべきかわからない別の配列のデータに基づいて1つの配列をフィルタリングします

X[i]^2 + Y[i]^2 < 1 

:私はXは、そのような私が唯一のインデックスXiを保つことをフィルタリングします。どのような種類のループも使用することはできません。

答えて

0

これは行います:

X_filtered = X[X**2 + Y**2 < 1] 

X**2 + Y**2 < 1はブール配列を返し、このアレイ上XにアクセスするだけTrueに等しい指数でX返します。

+0

私はすべての答えをdownvotedされた理由として少し混乱していますが、あなたは、彼らが同じ静脈内のすべての本質的だ考えます。悲しい...本当に。 –

+0

@MikeMcMahon私がdownvoterかどうか疑問に思っているなら、答えはnoです。なぜならOPが明示的に 'for 'を使うことは禁じられているからです。それは偽のdownvotesがあなたが本当に悲しいことになる場合は、おそらくSO ...になることを停止する必要があります言った); – Julien

+0

おかしい態度。いいえ、私は虚偽投票がSOの一般的な基盤に反していると思います。 「それ」が決して意図されていないときに、好きでなければ、人々が推薦するのは確かに貧弱な態度です。 ;) –

-1
for ind,(a,b) in enumerate(zip(x,y)) : 
    if (a**2 + b**2) < 1 : 
     print ind 
+0

これは、あらゆる種類のループの使用を許可していない。 –

-1

X = [X[i] for i in range(len(X)) if X[i]**2 + Y[i]**2 < 1]

Xのみがフィルタ条件に一致するものが含まれるように、これはXをフィルタリングします。

これは、理解を介したループを使用していることに注意してください。したがって、ループなしでこれがどのように行われるかはわかりません。

-1

私はこれらの配列がループするには大きすぎると思いますか?あなただけ後での指標を維持にしたい場合は、Generatorsを試してみてください。

def X_indices_filterd(X, Y): 
    for i in enumerate(X): 
     if (X[i] ** 2 + Y[i] ** 2 < 1) yield i 
+0

私の悪いです。私は "numpy"タグを見ることなく答えました。 :( – Ginhing

関連する問題