Numpy Arange с несколькими интервалами - PullRequest
2 голосов
/ 29 апреля 2010

у меня есть пустой массив, который представляет несколько x-интервалов функции:

In [137]: x_foo
Out[137]: 
array([211, 212, 213, 214, 215, 216, 217, 218, 940, 941, 942, 943, 944,
       945, 946, 947, 948, 949, 950])

Как вы можете видеть, в x_foo есть два интервала: один от 211 до 218 и один от 940 до 950. Это интервалы, которые я хочу интерполировать с помощью scipy. для этого мне нужно настроить интервал, например, «211.0 211.1 211.2 ...», который вы обычно делаете с:

arange( x_foo[0], x_foo[-1], 0.1 )

в случае нескольких интервалов это невозможно. так вот мой вопрос: есть ли простой способ сделать это в стиле массива? или мне нужно написать функцию, которая зацикливается на весь массив и разделяется, если разница> 1?

спасибо!

Ответы [ 2 ]

3 голосов
/ 29 апреля 2010
import numpy as np
x = np.array([211, 212, 213, 214, 215, 216, 217, 218, 940, 941, 942, 943, 944,
   945, 946, 947, 948, 949, 950])
ind = np.where((x[1:] - x[:-1]) > 1)[0]

даст вам индекс для элемента в x, равный 218. Тогда вам понадобятся два диапазона:

np.arange(x[0],x[ind],0.1)

и

np.arange(x[ind+1],x[-1],0.1)
0 голосов
/ 18 мая 2010
np.r_[ 211:218+1, 940:950+1 ]
array([211, 212, 213, 214, 215, 216, 217, 218, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950])

r_[] делает ряд из скаляров, диапазонов, массивов, списков, кортежей ...; Я думаю, r_ это сокращение от row. Для документации см. np.r_? в Ipython.
(Python обрабатывает 211: 218 в квадратных скобках, но не в круглых, поэтому r_[] не ()).

...