Pular para o conteúdo

Como usar a função linspace do numpy?

[

np.linspace(): Criar Matrizes com Espaçamento Uniforme

por Stephen Gruppetta (data-science | intermediate | numpy)

Quando você está trabalhando com aplicações numéricas usando o NumPy, muitas vezes precisa criar uma matriz de números. Em muitos casos, você deseja que os números sejam espaçados uniformemente, mas também há momentos em que pode precisar de números espaçados de forma não uniforme. Uma das principais ferramentas que você pode usar em ambas as situações é np.linspace().

Na sua forma mais básica, np.linspace() pode parecer relativamente simples de usar. No entanto, é uma parte essencial do conjunto de ferramentas de programação numérica. É muito versátil e poderoso. Neste tutorial, você aprenderá a usar essa função de forma eficaz.

Neste tutorial, você aprenderá a:

  • Criar uma sequência de números com espaçamento uniforme ou não uniforme
  • Decidir quando usar np.linspace() em vez de outras ferramentas
  • Usar os parâmetros de entrada obrigatórios e opcionais
  • Criar matrizes com duas ou mais dimensões
  • Representar funções matemáticas de forma discreta

Este tutorial pressupõe que você já esteja familiarizado com os conceitos básicos do NumPy e do tipo de dados ndarray. Você começará aprendendo sobre várias formas de criar uma sequência de números em Python. Em seguida, você verá todas as maneiras de usar np.linspace() e como usá-lo de forma eficaz em seus programas.

Bônus grátis: Clique aqui para ter acesso a um guia de recursos gratuito do NumPy que aponta para os melhores tutoriais, vídeos e livros para melhorar suas habilidades em NumPy.

Criando uma sequência de números com espaçamento uniforme

Existem várias formas de criar uma sequência de números com espaçamento uniforme em Python. np.linspace() permite que você faça isso e personalize a sequência para atender às suas necessidades específicas, mas não é a única forma de criar uma sequência de números. Na próxima seção, você aprenderá como usar np.linspace() antes de compará-lo com outras formas de criar sequências de números espaçados uniformemente.

Usando np.linspace()

np.linspace() possui dois parâmetros obrigatórios, start e stop, que você pode usar para definir o início e o final da sequência:

import numpy as np
np.linspace(1, 10)

A saída será uma matriz com os números de 1 a 10, espaçados uniformemente.

Você também pode especificar o número de elementos desejados na sequência usando o parâmetro opcional num:

import numpy as np
np.linspace(1, 10, num=5)

A saída será uma matriz com 5 elementos, espaçados uniformemente entre 1 e 10.

Usando range() e List Comprehensions

Outra forma de criar uma sequência de números com espaçamento uniforme é usar a função embutida range() em combinação com as List Comprehensions:

[i for i in range(1, 11)]

A saída será uma lista com os números de 1 a 10. No entanto, com essa abordagem, você obtém uma lista em vez de uma matriz NumPy.

Usando np.arange()

Uma terceira opção é usar a função np.arange(), que é semelhante à função embutida range(). A principal diferença é que np.arange() retorna uma matriz NumPy em vez de uma lista.

import numpy as np
np.arange(1, 11)

A saída será uma matriz com os números de 1 a 10, espaçados uniformemente.

Personalizando a saída de np.linspace()

Além dos parâmetros obrigatórios, start e stop, np.linspace() possui vários parâmetros opcionais que você pode usar para personalizar a saída da função.

Os parâmetros start, stop e num

Você pode especificar o valor inicial e final da sequência usando os parâmetros start e stop. Além disso, você pode especificar o número de elementos desejados na sequência usando o parâmetro num.

O parâmetro dtype para modificar o tipo de saída

Por padrão, np.linspace() retorna uma matriz com valores de ponto flutuante. No entanto, você pode usar o parâmetro opcional dtype para especificar um tipo de saída diferente.

Os parâmetros endpoint e retstep

O parâmetro endpoint determina se o valor final da sequência deve ser incluído ou excluído. Por padrão, endpoint=True, o que significa que o valor final é incluído na sequência.

O parâmetro retstep permite que você retorne o espaçamento médio entre os elementos da sequência, além da própria sequência.

Valores não escalares para matrizes de dimensões superiores

Você também pode usar np.linspace() para criar matrizes de dimensões superiores. Basta especificar os valores iniciais e finais para cada dimensão.

Representando funções matemáticas

np.linspace() pode ser útil para representar funções matemáticas de forma discreta. Você pode usar a sequência de números gerada por np.linspace() como valores de entrada para a função matemática desejada.

Criando sequências de números com espaçamento não uniforme

Além de criar sequências de números com espaçamento uniforme, você também pode usar np.linspace() para criar sequências com espaçamento não uniforme.

Espaços logarítmicos

Você pode criar uma sequência de números espaçados logaritmicamente usando o parâmetro opcional base. Por exemplo:

import numpy as np
np.linspace(1, 10, num=5, base=10)

Essa função retornará uma matriz com 5 elementos, espaçados de forma logarítmica entre 1 e 10 (base 10).

Outros tipos de sequências não lineares

Você também pode criar sequências de números espaçados de forma não linear usando funções matemáticas. Por exemplo, você pode usar a função np.sin() para criar uma sequência de números espaçados pelo seno:

import numpy as np
np.sin(np.linspace(0, 2*np.pi, num=100))

Exemplo: Simulação de um planeta em órbita

Um exemplo prático do uso de sequências numéricas não uniformes é a simulação de um planeta em órbita. Aqui, você pode usar np.linspace() para criar sequências com espaçamento não uniforme, representando a posição do planeta em cada ponto da órbita.

Conclusão

A função np.linspace() é uma ferramenta poderosa para criar matrizes com espaçamento uniforme ou não uniforme. No tutorial de hoje, você aprendeu como usar essa função de maneira eficaz, personalizando a saída e aplicando-a em diferentes contextos. Agora você pode aplicar esse conhecimento na sua própria codificação numérica usando o NumPy.