<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 Table of Contents
<p><div class="lev1 toc-item"><a href="#Fatiamento-em-narray-unidimensional" data-toc-modified-id="Fatiamento-em-narray-unidimensional-1"><span class="toc-item-num">1&nbsp;&nbsp;</span>Fatiamento em narray unidimensional</a></div><div class="lev1 toc-item"><a href="#Inicializando-um-array-unidimensional" data-toc-modified-id="Inicializando-um-array-unidimensional-2"><span class="toc-item-num">2&nbsp;&nbsp;</span>Inicializando um array unidimensional</a></div><div class="lev1 toc-item"><a href="#Exemplo-simples-de-fatiamento" data-toc-modified-id="Exemplo-simples-de-fatiamento-3"><span class="toc-item-num">3&nbsp;&nbsp;</span>Exemplo simples de fatiamento</a></div><div class="lev1 toc-item"><a href="#Exemplo-de-fatiamento-com-indices-negativos" data-toc-modified-id="Exemplo-de-fatiamento-com-indices-negativos-4"><span class="toc-item-num">4&nbsp;&nbsp;</span>Exemplo de fatiamento com indices negativos</a></div><div class="lev2 toc-item"><a href="#Acessando-o-último-elemento-com-índice-negativo" data-toc-modified-id="Acessando-o-último-elemento-com-índice-negativo-41"><span class="toc-item-num">4.1&nbsp;&nbsp;</span>Acessando o último elemento com índice negativo</a></div><div class="lev2 toc-item"><a href="#Inversão-do-array-com-step-negativo-(step-=--1)" data-toc-modified-id="Inversão-do-array-com-step-negativo-(step-=--1)-42"><span class="toc-item-num">4.2&nbsp;&nbsp;</span>Inversão do array com step negativo (step = -1)</a></div><div class="lev1 toc-item"><a href="#Fatiamento-avançado" data-toc-modified-id="Fatiamento-avançado-5"><span class="toc-item-num">5&nbsp;&nbsp;</span>Fatiamento avançado</a></div><div class="lev2 toc-item"><a href="#Supressão-do-indice-limite-inferior" data-toc-modified-id="Supressão-do-indice-limite-inferior-51"><span class="toc-item-num">5.1&nbsp;&nbsp;</span>Supressão do indice limite inferior</a></div><div class="lev2 toc-item"><a href="#Supressão-do-indice-limite-superior" data-toc-modified-id="Supressão-do-indice-limite-superior-52"><span class="toc-item-num">5.2&nbsp;&nbsp;</span>Supressão do indice limite superior</a></div><div class="lev2 toc-item"><a href="#Supressão-do-indice-do-step" data-toc-modified-id="Supressão-do-indice-do-step-53"><span class="toc-item-num">5.3&nbsp;&nbsp;</span>Supressão do indice do step</a></div><div class="lev2 toc-item"><a href="#Todos-os-elementos-com-passo-unitário" data-toc-modified-id="Todos-os-elementos-com-passo-unitário-54"><span class="toc-item-num">5.4&nbsp;&nbsp;</span>Todos os elementos com passo unitário</a></div><div class="lev1 toc-item"><a href="#Documentação-Oficial-Numpy" data-toc-modified-id="Documentação-Oficial-Numpy-6"><span class="toc-item-num">6&nbsp;&nbsp;</span>Documentação Oficial Numpy</a></div><div class="lev1 toc-item"><a href="#Links-Interessantes" data-toc-modified-id="Links-Interessantes-7"><span class="toc-item-num">7&nbsp;&nbsp;</span>Links Interessantes</a></div>
# Fatiamento em narray unidimensional
Um recurso importante do numpy é o fatiamento no qual é possível acessar um subconjunto do array de diversas formas. O fatiamento define os índices onde o array será acessado definindo o ponto inicial, final e o passo entre eles, nesta ordem
Step1:  Exemplo simples de fatiamento
Para a realização do fatiamento são utilizados 3 parâmetros, colocados no local do índice do array. Os 3 parâmetros são separados por dois pontos "
Step2:  Exemplo de fatiamento com indices negativos
Acessando o último elemento com índice negativo
O código abaixo acessa os elementos ímpares até antes do último elemento
Step3:  Inversão do array com step negativo (step = -1)
Step4:  Fatiamento avançado
É possível realizar o fatiamento utilizando os 3 parâmetros explícitos ( o limite inferior, limite superior e o step), ou podemos suprimir algum desses parâmetros. Nestes casos a função toma o valor defaut
Step5:  Supressão do indice limite superior
Quando o índice do limite superior é omitido, fica implícito que é o último elemento
Step6:  Supressão do indice do step
O índice do step é opcional e quando não é indicado, seu valor é 1
Step7:  Todos os elementos com passo unitário
<ASSISTANT_TASK:>
Python Code:
import numpy as np
a = np.arange(20) # a é um vetor de dimensão 20
print('a = \n', a)
Explanation: Table of Contents
<p><div class="lev1 toc-item"><a href="#Fatiamento-em-narray-unidimensional" data-toc-modified-id="Fatiamento-em-narray-unidimensional-1"><span class="toc-item-num">1&nbsp;&nbsp;</span>Fatiamento em narray unidimensional</a></div><div class="lev1 toc-item"><a href="#Inicializando-um-array-unidimensional" data-toc-modified-id="Inicializando-um-array-unidimensional-2"><span class="toc-item-num">2&nbsp;&nbsp;</span>Inicializando um array unidimensional</a></div><div class="lev1 toc-item"><a href="#Exemplo-simples-de-fatiamento" data-toc-modified-id="Exemplo-simples-de-fatiamento-3"><span class="toc-item-num">3&nbsp;&nbsp;</span>Exemplo simples de fatiamento</a></div><div class="lev1 toc-item"><a href="#Exemplo-de-fatiamento-com-indices-negativos" data-toc-modified-id="Exemplo-de-fatiamento-com-indices-negativos-4"><span class="toc-item-num">4&nbsp;&nbsp;</span>Exemplo de fatiamento com indices negativos</a></div><div class="lev2 toc-item"><a href="#Acessando-o-último-elemento-com-índice-negativo" data-toc-modified-id="Acessando-o-último-elemento-com-índice-negativo-41"><span class="toc-item-num">4.1&nbsp;&nbsp;</span>Acessando o último elemento com índice negativo</a></div><div class="lev2 toc-item"><a href="#Inversão-do-array-com-step-negativo-(step-=--1)" data-toc-modified-id="Inversão-do-array-com-step-negativo-(step-=--1)-42"><span class="toc-item-num">4.2&nbsp;&nbsp;</span>Inversão do array com step negativo (step = -1)</a></div><div class="lev1 toc-item"><a href="#Fatiamento-avançado" data-toc-modified-id="Fatiamento-avançado-5"><span class="toc-item-num">5&nbsp;&nbsp;</span>Fatiamento avançado</a></div><div class="lev2 toc-item"><a href="#Supressão-do-indice-limite-inferior" data-toc-modified-id="Supressão-do-indice-limite-inferior-51"><span class="toc-item-num">5.1&nbsp;&nbsp;</span>Supressão do indice limite inferior</a></div><div class="lev2 toc-item"><a href="#Supressão-do-indice-limite-superior" data-toc-modified-id="Supressão-do-indice-limite-superior-52"><span class="toc-item-num">5.2&nbsp;&nbsp;</span>Supressão do indice limite superior</a></div><div class="lev2 toc-item"><a href="#Supressão-do-indice-do-step" data-toc-modified-id="Supressão-do-indice-do-step-53"><span class="toc-item-num">5.3&nbsp;&nbsp;</span>Supressão do indice do step</a></div><div class="lev2 toc-item"><a href="#Todos-os-elementos-com-passo-unitário" data-toc-modified-id="Todos-os-elementos-com-passo-unitário-54"><span class="toc-item-num">5.4&nbsp;&nbsp;</span>Todos os elementos com passo unitário</a></div><div class="lev1 toc-item"><a href="#Documentação-Oficial-Numpy" data-toc-modified-id="Documentação-Oficial-Numpy-6"><span class="toc-item-num">6&nbsp;&nbsp;</span>Documentação Oficial Numpy</a></div><div class="lev1 toc-item"><a href="#Links-Interessantes" data-toc-modified-id="Links-Interessantes-7"><span class="toc-item-num">7&nbsp;&nbsp;</span>Links Interessantes</a></div>
# Fatiamento em narray unidimensional
Um recurso importante do numpy é o fatiamento no qual é possível acessar um subconjunto do array de diversas formas. O fatiamento define os índices onde o array será acessado definindo o ponto inicial, final e o passo entre eles, nesta ordem: [inicial:final:passo].
# Inicializando um array unidimensional
End of explanation
a = np.arange(20)
print('Resultado da operação a[1:15:2]')
print(a[1:15:2])
Explanation: Exemplo simples de fatiamento
Para a realização do fatiamento são utilizados 3 parâmetros, colocados no local do índice do array. Os 3 parâmetros são separados por dois pontos ":". Todos os 3 parâmetros podem ser opcionais que ocorrem quando o valor inicial é 0, o valor final é o tamanho do array e o passo é 1. Lembrar que a ordem deles é: [inicial:final:passo]. Se o passo for 1 fica: [inicial:final]. Se o início for 0 fica: [:final] e se o final for o último fica: [inicio:] e se forem todos [:].
O fatiamento é feito começando pelo primeiro valor, adicionando-se o passo até antes do último valor. Três aspectos são extremamente importantes de serem lembrados: O índice inicial começa em zero, o índice final nunca é atingido, o último índice utilizado é sempre o imediatamente anterior e o Numpy admite índices negativos, que é uma indexação do último (-1) até o primeiro elemento (-W).
Os exemplos a seguir ajudam a fixar estes conceitos.
O código abaixo acessa os elementos ímpares começando de 1 até 14:
End of explanation
a = np.arange(20)
print('Resultado da operação a[1:-1:2]')
print(a[1:-1:2])
print('Note que o fatiamento termina antes do último elemento (-1)')
Explanation: Exemplo de fatiamento com indices negativos
Acessando o último elemento com índice negativo
O código abaixo acessa os elementos ímpares até antes do último elemento:
End of explanation
a = np.arange(20)
print('Resultado da operação a[-3:2:-1]')
print(a[-3:2:-1])
print('Note que o fatiamento retorna o array invertido')
print('Antepenúltimo até o terceiro elemento com step = -1')
Explanation: Inversão do array com step negativo (step = -1)
End of explanation
a = np.arange(20)
print('Resultado da operação a[:15:2]')
print(a[:15:2])
print('Note que o fatiamento inicia do primeiro elemento')
print('Primeiro elemento até antes do 15o com passo duplo')
Explanation: Fatiamento avançado
É possível realizar o fatiamento utilizando os 3 parâmetros explícitos ( o limite inferior, limite superior e o step), ou podemos suprimir algum desses parâmetros. Nestes casos a função toma o valor defaut: limite inferior = primeiro elemento, limite superior = último elemento e step = 1.
É possível realizar o fatiamento utilizando os 3 parâmetros explícitos
( o limite inferior, limite superior e o step), ou podemos suprimir algum 
desses parâmetros. Nestes casos a função toma o valor defaut: limite 
inferior = primeiro elemento, limite superior = último elemento e step = 1.
|Proposta inicial     | Equivalente |
|---------------------|-------------|
|a[0:len(a):1]        | a[:]        |
|a[0:10:1]            | a[:10]      |
|a[0:10:2]            | a[:10:2]    |
|a[2:len(a):1]        | a[2::]      |
|a[2:len(a):2]        | a[2::2]     |
Supressão do indice limite inferior
Quando o índice do limite inferior é omitido, é subentendido que é 0:
End of explanation
a = np.arange(20)
print('Resultado da operação a[1::2]')
print(a[1::2])
print('Note que o fatiamento termina último elemento')
print('Primeiro elemento até o último com passo duplo')
Explanation: Supressão do indice limite superior
Quando o índice do limite superior é omitido, fica implícito que é o último elemento:
End of explanation
a = np.arange(20)
print('Resultado da operação a[1:15]')
print(a[1:15])
print('Note que o fatiamento tem step unitário')
print('Primeiro elemento até antes do 15o com passo um')
Explanation: Supressão do indice do step
O índice do step é opcional e quando não é indicado, seu valor é 1:
End of explanation
a = np.arange(20)
print('Resultado da operação a[:]')
print(a[:])
print('Todos os elementos com passo unitário')
Explanation: Todos os elementos com passo unitário
End of explanation
<END_TASK>