У меня есть массив numpy, и я хочу получить "окрестности" i-й точки. Обычно массивы, которые я использую, являются двумерными, но следующий пример 1D иллюстрирует то, что я ищу. Если
A = numpy.array([0,10,20,30,40,50,60,70,80,90])
Тогда окрестность элемента (размер 5) элемента 4 равна [20,30,40,50,60]
, и это легко получить, выполняя A[i-2:i+3]
.
Однако мне также нужны окрестности для "обертывания" краев массива, так что окрестность элемента 0 равна [80,90,0,10,20]
, а окрестность элемента 9 равна [70,80,90,0,10]
. Кажется, я не могу найти элегантный способ сделать это, поэтому в конечном итоге мне приходится использовать сложную, раздражающую логику каждый раз, когда это появляется (что очень часто для меня). В двумерном случае окрестность точки будет прямоугольным массивом.
Итак, мой вопрос: есть ли опрятный способ выражения этой операции "округление окрестности" в numpy? Я бы предпочел что-то, что возвращает фрагмент, а не копию, но читаемость и скорость являются наиболее важными соображениями.