2014-11-04 2 views
0

У меня есть две переменные, lim1 и lim2, которые являются индексами матрицы. Они указывают на часть матрицы, которая должна быть заполнена нулями:Индексирование массивов

matrix[j,lim1:lim2] = 0 

Однако, в некоторых случаях, lim1 и LIM2 превышают пределы матрицы, то есть, они меньше нуля или больше, чем п (где . п = Len (матрица [J ,:]) В этих случаях я должен использовать 0 или п вместо lim1 или LIM2

Чтобы проверить эти пределы, я в настоящее время с помощью кода:.

lim1 = something 
if lim1 < 0: 
    lim1 = 0 
elif lim1 > n: 
    lim1 = n 

lim2 = something 
if lim2 < 0: 
    lim2 = 0 
elif lim2 > n: 
    lim2 = n 

matrix[j,lim1:lim2] = 0 

Есть ли еще более компактный способ проверить эти ограничения? Например, в IDL он будет записан как:

matrix[lim1>0<n:lim2>0<n] = 0 

Этот код многократно повторяется, поэтому было бы очень удобно писать его более кратко.

Заранее благодарен!

+0

Вы должны использовать NumPy –

+0

не Если ваш верхний предел п-1 вместо п? – KobeJohn

ответ

0

Вы можете использовать min и max, чтобы получить значение. Таким образом, код может быть написан немного более сжато, как это:

matrix[j, min(max(0,lim1),n):min(max(0,lim2),n)] = 0 
Смежные вопросы