Python 在圆形数组中查找最近的数字

Python 在圆形数组中查找最近的数字,python,numpy,Python,Numpy,我有一个numpy阵列: np.arange(1, 366) 我有两个值:355和129。我想找出其中哪一个值与该数组中的某个数字最接近,比如说36 在这种情况下,答案将是355,因为我希望数组滚动,即365后面跟着1` 我可以通过使用多个if-else条件来实现这一点,有没有更符合python的解决方案?我使用极坐标数学来解决这个问题: import numpy as np aa=np.arange(1, 366) bb=np.array([355, 136, 155,154 ]) c=36

我有一个numpy阵列:

np.arange(1, 366)
我有两个值:
355
129
。我想找出其中哪一个值与该数组中的某个数字最接近,比如说
36

在这种情况下,答案将是
355
,因为我希望数组滚动,即
365后面跟着
1`


我可以通过使用多个if-else条件来实现这一点,有没有更符合python的解决方案?

我使用极坐标数学来解决这个问题:

import numpy as np
aa=np.arange(1, 366)
bb=np.array([355, 136, 155,154 ])
c=36

def short(bb,c):
    x0= np.min(np.abs(bb-c))
    x1= np.min(np.abs(366-bb+c))  
    if x0<x1:
        return bb[np.argmin(bb-c)]
    else: 
        return bb[np.argmin(366-bb+c)]


bb=np.array([355, 136, 155,154 ])
print short(bb,c)

bb=np.array([355, 136, 155,154,38])
print short(bb,c)

输出:

355

我利用极坐标数学来解决这个问题:

输出:

355

你也可以分享你的代码(你尝试过的解决方案)如果这是关于序列号的(这是你的问题所说的,但可能不是你的意思),你可以使用模运算符。如果这是关于序列号的,你也可以分享你的代码(你尝试过的解决方案)吗(这就是你的问题所说的,但可能不是你的意思),你可以使用模算子。我认为他指的不是二维几何圆,而是一个向量,它围绕着位置。有趣的是,几何思想仍然有效:)@roadrunner66我只是受圆圈的启发而使用几何:我认为DHe不是指2D几何圆圈,而是指一个矢量,它在位置上环绕。有趣的是,几何概念仍然有效:)@roadrunner66我只是受圆圈的启发而使用几何:D
355