我有一个名为rad
,relative_x
,relative_y
的数组,其中rad
的大小与其他两个不同。我想创建一个名为masking
的数组,其长度为rad
,其格式如下:
masking[i] = (relative_x**2 + relative_y**2 <= (rad[i])**2) & (relative_x**2 + relative_y**2 >= (rad[i]*0.9)**2)
但我想在没有循环的情况下这样做。有没有办法在python中执行此操作?
答案 0 :(得分:0)
zip()
和列表理解几乎可以做到。你仍然有一个循环,但它有点隐藏。
>>> rad = [1.42, 4, 8]
>>> relative_x = [1, 2, 3, 4, 5]
>>> relative_y = [1, 2, 3, 4, 5]
>>>
>>> masking = [rad_**2 >= relative_x_**2 + relative_y_**2 >= (rad_*0.9)**2
for (rad_, relative_x_, relative_y_) in zip(rad, relative_x, relative_y)]
>>> print masking
[True, False, False]
请注意,在python中,您可以执行1 < 2 < 3
。