Compre o e-book deste material aqui!
Um arranjo (em inglês, array) é uma coleção de objetos (todos do mesmo tipo) em que os elementos são organizados por eixos. Nesta seção, vamos nos restringir a arranjos unidimensionais (de apenas um eixo). Esta é a estrutura computacionais usualmente utilizada para a alocação de vetores.
NumPy é uma biblioteca Python que fornece suporte para a alocação e manipulação de arranjos. Usualmente, a biblioteca é importada como segue
Na sequência, vamos assumir que o NumPy já está importado como acima.
O método numpy.array permite a alocação de um arranjo. Como parâmetro de entrada, recebe uma list contendo os elementos do arranjo. Por exemplo,
aloca o arranjo de números inteiros v. Embora arranjos não sejam vetores, a modelagem computacional de vetores usualmente é feita utilizando-se arrays. Por exemplo, em um código Python, o vetor
(5.1) |
pode ser alocado usando-se o array v acima.
O tipo dos dados de um array é definido na sua criação. Pode ser feita de forma automática ou explícita pela propriedade numpy.dtype. Por exemplo,
O NumPy conta com métodos úteis para a inicialização de arrays:
numpy.zeros arranjo de elementos nulos
numpy.ones arranjo de elementos iguais a um
numpy.empty arranjo de elementos não predefinidos
numpy.linspace(start, stop, num=50) arranjo de elementos uniformemente espaçados
Um numpy.array é uma coleção de objetos mutável, ordenada e indexada. Indexação e fatiamento podem ser feitos da mesma forma que para um tuple ou uma list. Por exemplo,
Em programação, o reordenamento (em inglês, sorting) de elementos de uma sequência ordenada de números (array, tuple, tuple, etc.) consiste em alterar a sequência de forma que os elementos sejam organizados do menor para o mair valor. Na sequência, vamos estudar alguns métodos para isso.
Dado um numpy.array3737endnote: 37Ou, um tuple, list, etc.., o método bolha consiste em percorrer o arranjo e permutar dois elementos consecutivos de forma que o segundo seja sempre maior que o primeiro. Uma vez que percorrermos o arranjo, teremos garantido que o maior valor estará na última posição do arranjo e os demais elementos ainda poderão estar desordenados. Então, percorremos o arranjo novamente, permutando elementos dois-a-dois conforme a ordem desejada, o que trará o segundo maior elemento para a penúltima posição. Ou seja, para um arranjo com elementos, temos garantido o reordenamento de todos os elementos após repetições desse algoritmo.
Na sequência, implementamos o Método Bolha para o reordenamento de arranjos e aplicamos para
(5.3) |
Em geral, para um arranjo de elementos, o Método Bolha requer repetições para completar o ordenamento. Entretanto, dependendo do caso, o ordenamento dos elementos pode terminar em menos passos.
Na sequência, implementamos uma nova versão do Método Bolha para o reordenamento de arranjos. Esta versão verifica se há elementos fora de ordem e, caso não haja, interrompe o algoritmo. Como exemplo, aplicamos para
(5.4) |
(Métodos de Ordenamento.) Existem vários métodos para o ordenamento de uma sequência. O Método Bolha é um dos mais simples, mas também, em geral, menos eficiente. O NumPy tem disponível a função numpy.sort para o reordenamento de elementos. Também bastante útil, é a função numpy.argsort, que retorna os índices que reordenam os elementos.
No NumPy, temos os operadores aritméticos elemento-a-elemento (em ordem de precedência)
**
*, /, //, %
+, -
Vamos usar arrays para alocar os vetores
(5.5) | |||
(5.6) |
Então, computamos o produto interno
(5.7a) | ||||
(5.7b) | ||||
(5.7c) |
(Concatenação de Arranjos.) No NumPy, a concatenação de arranjos pode ser feita com a função numpy.concatenate. Por exemplo,
Aloque cada um dos seguintes vetores como um numpy.array:
Considere o seguinte numpy.array
Sem implementar, escreva os arranjos derivados:
v[1]
v[1:4]
v[:3]
v[1:]
v[1:4:2]
v[-2:-5:-1]
v[::-2]
Então, verifique seus resultados implementando-os.
Dica: consulte a Subseção 5.1.2.
Desenvolva uma função argBubbleSort(arr), i.e. uma função que retorna os índices que reordenam os elementos do arranjo arr em ordem crescente. Teste seu código para o ordenamento de diversos arranjos e compare os resultados com a aplicação da função numpy.argsort.
Desenvolva um Método Bolha para o reordenamento dos elementos de um dado arranjo em ordem decrescente. Teste seu código para o reordenamento de diversos arranjos. Como pode-se usar a função numpy.sort para obter os mesmos resultados?
Desenvolva uma função argBubbleSort(arr, emOrdem), i.e. uma função que retorna os índices que reordenam os elementos do arranjo arr na ordem definida pela função emOrdem. Teste seu código para o ordenamento de diversos arranjos, tanto em ordem crescente como em ordem decrescente. Como pode-se obter os mesmos resultados usando-se a função numpy.argsort?
Implemente uma função media(arr) que returna o valor médio do arranjo de números arr. Teste seu código para diferentes arranjos e compare os resultados com o da função numpy.mean.
Desenvolva uma função que retorna o ângulo entre dois vetores e dados.
As informações preenchidas são enviadas por e-mail para o desenvolvedor do site e tratadas de forma privada. Consulte a Política de Uso de Dados para mais informações. Aproveito para agradecer a todas/os que de forma assídua ou esporádica contribuem enviando correções, sugestões e críticas!