2016-10-29 4 views
0

У меня есть массив bound_1shape(1,5):Индексирование Python с помощью массивов

bound_1 = [ 0, 5, 9, 12, 14] 

Массив bound_2shape(1, 5):

bound_2 = [ 5, 9, 12, 14, 19] 

массив значение, shape(1, 5):

value = [ 1, 2, 3, 4, 5] 

Результат массива, инициализируется нулями, shape(1, 19)

result_array= [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 

Теперь все, что я хочу сделать, это записать значение в соответствующий диапазон (между bound1 и bound2) в результирующий массив, который должен выглядеть тогда как

result_array= [1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 4, 4, 5, 5, 5, 5, 5] 

Я думал, что это делается с:

result_array[ 0 , bound_1 : bound_2 ] = value 

Но я получаю сообщение об ошибке:

IndexError: Invalid Slice 

Я пытаюсь решить это без петли.

ответ

0

Я не могу придумать симпатичный «питонический» способ ответить на этот вопрос. Возможно, кто-то еще будет с более короткой формулировкой.

Но, следующие должны сделать работу:

for idx in range(0, len(bound_1)): 
    for dst in range(bound_1[idx], bound_2[idx]): 
    result_array[dst] = value[idx] 
+0

большое спасибо! Я полностью пытаюсь решить это без цикла, хотя .. – Christoph

Смежные вопросы