Python 根据另一个数组中的数据筛选一个数组

Python 根据另一个数组中的数据筛选一个数组,python,arrays,numpy,Python,Arrays,Numpy,我有两个随机数数组,X和Y。X代表X坐标,Y代表Y坐标。我想过滤X,这样我只保留X的索引I,其中: X[i]^2 + Y[i]^2 < 1 X[i]^2+Y[i]^2

我有两个随机数数组,
X
Y
。X代表X坐标,
Y
代表Y坐标。我想过滤
X
,这样我只保留
X
的索引
I
,其中:

X[i]^2 + Y[i]^2 < 1
X[i]^2+Y[i]^2<1
我知道如何使用1数组中的值进行过滤,但由于我需要使用2,我不知道该怎么做。我不允许使用任何类型的循环。

这样可以:

X_filtered = X[X**2 + Y**2 < 1]
X_filtered=X[X**2+Y**2<1]
X**2+Y**2<1
返回一个布尔数组,访问该数组上的
X
仅在枚举(zip(X,Y))中ind,(a,b)的
True

索引处返回
X
for ind,(a,b) in enumerate(zip(x,y)) :
     if (a**2 + b**2) < 1 :
        print ind
如果(a**2+b**2)<1: 印刷工业
X=[X[i]表示范围内的i(len(X)),如果X[i]**2+Y[i]**2<1]

这将筛选X,以便X仅包含符合筛选条件的内容


请注意,这确实通过理解使用循环,因此我不太确定在没有循环的情况下如何实现

所以我认为这些数组太大,无法循环?如果您只想保留索引供以后使用,请尝试:

def X_index_filterd(X,Y):
对于枚举(X)中的i:
如果(X[i]**2+Y[i]**2<1)产生i

这一要求不允许使用任何类型的循环。我有点困惑,为什么所有答案都被否决,而你的答案基本上是相同的。悲哀的真的。@MikeMcMahon如果你想知道我是否是落选者,答案是否定的。我想这是因为OP明确提到禁止使用
For
。这就是说,如果虚假的反对票让你真的很难过,你可能应该停止这样做……;)糟糕的态度。不,我认为虚假的投票反对这样的普遍基础。如果人们不喜欢离开,而“它”从来就不是他们的本意,那么建议他们离开当然是一种糟糕的态度完全同意你的意见,也许是;)我说得不够清楚,我是在挖苦人。这是一种(显然很糟糕)的说法,我也认为虚假的反对票在这方面太普遍了。(注意:我的答案也毫无理由地被否决了…)我的错。我没有看到“numpy”标签就回答了:(
def X_indices_filterd(X, Y):
    for i in enumerate(X):
        if (X[i] ** 2 + Y[i] ** 2 < 1) yield i