2016-12-15 2 views
0

Я хотел бы получить кусочек для некоторого объекта np.ndarrayfoo:фрагмент индексировать или конец, если конец меньшим, то индекс (питон)

bar = foo[:end] 

Но иногда конец может быть больше, чем len(foo). Тогда я хотел бы получить bar = foo. Я могу достичь этого, если напишу bar = foo[:min(end, len(foo)]. Но это кажется не питоновым. Есть ли более простой способ сделать это?

+3

Если 'foo' - это список Python с длиной меньше, чем' end', то 'foo [: end]' возвращает копию 'foo'. Не делают ли объекты 'np.ndarray'? Какое поведение они проявляют, когда нарезают этот путь? – TigerhawkT3

+0

Я согласен с @CoryKramer здесь. Это коротко и ясно. – MrLeeh

+0

Разве это не поведение по умолчанию, когда 'end' больше длины? – Holloway

ответ

2

На самом деле вам не нужна специальная логика для обработки срезанных вне диапазона. По умолчанию, если end слишком велико, срез будет содержать конец массива.

>>> a = np.array([1,2,3]) 
>>> a 
array([1, 2, 3]) 
>>> a = a[:10] 
>>> a 
array([1, 2, 3]) 
Смежные вопросы