NumPy Tutorials

NumPy: Dominando Operações Aritméticas e Broadcasting

Spread the love

NumPy é uma biblioteca fundamental para computação numérica em Python, oferecendo ferramentas poderosas para manipulação eficiente de arrays. Este tutorial aborda dois conceitos fundamentais: operações aritméticas e broadcasting, essenciais para escrever código numérico conciso e performático.

Sumário

  1. Operações Aritméticas
  2. Broadcasting

1. Operações Aritméticas

NumPy estende perfeitamente os operadores aritméticos do Python (+, -, *, /, //, %, **) para operar diretamente em arrays NumPy. Essas operações são elemento a elemento, significando que elas se aplicam a elementos correspondentes nos arrays. Vamos ilustrar com exemplos:


import numpy as np

arr1 = np.array([1, 2, 3, 4])
arr2 = np.array([5, 6, 7, 8])

print("Adição:", arr1 + arr2)       # Saída: [ 6  8 10 12]
print("Subtração:", arr1 - arr2)    # Saída: [-4 -4 -4 -4]
print("Multiplicação:", arr1 * arr2) # Saída: [ 5 12 21 32]
print("Divisão:", arr1 / arr2)      # Saída: [0.2        0.33333333 0.42857143 0.5       ]
print("Divisão Inteira:", arr1 // arr2) # Saída: [0 0 0 0]
print("Módulo:", arr1 % arr2)        # Saída: [1 2 3 4]
print("Exponenciação:", arr1 ** arr2) # Saída: [    1    64  2187 65536]

Esta operação elemento a elemento se estende sem esforço para arrays multidimensionais.

2. Broadcasting

Broadcasting é um recurso poderoso do NumPy que permite operações entre arrays de formatos diferentes, sob condições específicas. Ele elimina a necessidade de loops explícitos, melhorando significativamente o desempenho. As regras principais do broadcasting são:

  1. Regra 1: Se os arrays tiverem dimensões desiguais, o formato do array menor terá 1s adicionados à esquerda até que corresponda à dimensionalidade do array maior.
  2. Regra 2: Se um array tiver uma dimensão de tamanho 1 e o outro array tiver uma dimensão maior que 1, a dimensão de tamanho 1 será esticada para corresponder à dimensão maior.
  3. Regra 3: Se os arrays tiverem dimensões diferentes e nenhum tiver tamanho 1, um ValueError será levantado.

Vamos demonstrar o broadcasting:


import numpy as np

arr1 = np.array([[1, 2, 3], [4, 5, 6]])
arr2 = np.array([10, 20, 30])

result = arr1 + arr2  # Broadcasting em ação

print(result)
# Saída:
# [[11 22 33]
# [14 25 36]]

Aqui, arr2 (formato (3,)) é transmitido para corresponder ao formato de arr1 (2, 3). Cada linha de arr1 é adicionada a arr2, evitando loops explícitos. Dominar o broadcasting é crucial para escrever código NumPy eficiente e legível. Sempre considere cuidadosamente os formatos dos arrays para evitar resultados inesperados ou erros.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *