HOWTO · NumPy
Como multiplicar um array por um escalar em Python
Para multiplicar os elementos de um array com NumPy por um escalar em Python, use o operador `*` ou a função `numpy.multiply()`.
Nesta página
Para multiplicar cada elemento de um array NumPy por um escalar em Python, use o operador * ou numpy.multiply(). Ambos realizam a multiplicação elemento a elemento e retornam um array com os produtos correspondentes. Os exemplos abaixo mostram cada forma e sua saída observada.
Multiplique um array de NumPy por um escalar com *
Use * quando quiser que a expressão se pareça com uma operação aritmética comum. NumPy aplica o escalar a cada elemento do array, portanto a operação não exige um laço no seu código em Python. A variável result recebe o array calculado, enquanto values continua disponível para cálculos posteriores.
Execute este exemplo autocontido em um ambiente com NumPy instalado:
O código e os rótulos ou saídas exibidos nesta seção permanecem em inglês.
import numpy as np
values = np.array([2, 4, 6])
scale = 3
result = values * scale
print(result)
Saída observada:
[ 6 12 18]
Para o array [2, 4, 6] e o escalar 3, os produtos observados elemento a elemento são 6, 12 e 18. NumPy exibe esse array de inteiros com espaços que alinham os valores de um dígito. A mesma expressão funciona com valores inteiros ou de ponto flutuante; o dtype do resultado segue as regras de aritmética e promoção de tipos de NumPy.
Multiplique um array de NumPy por um escalar com numpy.multiply()
Chame numpy.multiply(array, scalar) quando nomear a operação explicitamente deixar o código mais fácil de ler ou combinar com outras operações. A função recebe o array e o escalar como seus dois operandos e, nesse uso, realiza a mesma multiplicação elemento a elemento que *. Execute este segundo exemplo autocontido em um ambiente com NumPy instalado:
O código e os rótulos ou saídas exibidos nesta seção permanecem em inglês.
import numpy as np
values = np.array([1.5, 2.0, 4.5])
scale = 2
result = np.multiply(values, scale)
print(result)
Saída observada:
[3. 4. 9.]
Aqui, cada valor é multiplicado por 2, e a saída observada é [3. 4. 9.]. NumPy exibe esses valores de ponto flutuante sem um zero final. Nos dois exemplos, o resultado é atribuído a uma nova variável, sem alterar o array original no próprio local. Se precisar manter os valores originais, continue usando values; se precisar de outro fluxo de trabalho, atribua o resultado de volta de forma deliberada.
Escolha entre * e numpy.multiply()
Para multiplicar um array por um escalar, escolha a forma que deixe o código ao redor mais claro. O operador * é compacto e familiar em uma expressão aritmética. numpy.multiply() deixa a operação explícita como uma chamada de função. Neste caso, nenhum dos dois tem uma vantagem especial para broadcasting: ambos seguem as regras de multiplicação elemento a elemento de NumPy.
Um escalar pode ser expandido por broadcasting sobre o array porque pode ser aplicado a todos os elementos. De modo mais geral, NumPy pode combinar arrays com formas diferentes quando suas dimensões são compatíveis segundo as regras de broadcasting. As dimensões são compatíveis quando são iguais ou quando uma delas é 1, comparando-as da direita para a esquerda; dimensões iniciais ausentes são tratadas como 1. Consulte o guia de broadcasting do NumPy para ver as regras completas e exemplos. Por exemplo, um array de forma (2, 3) pode ser multiplicado elemento a elemento por um array de forma (3,), pois este se alinha à última dimensão. Formas que não atendem a essas regras de compatibilidade não podem ser multiplicadas elemento a elemento dessa maneira. O broadcasting não torna formas arbitrárias compatíveis.
Essas operações produzem produtos elemento a elemento; elas não fazem multiplicação de matrizes. Para multiplicar um array por um escalar, use values * scale ou numpy.multiply(values, scale) e, em seguida, inspecione ou use o array retornado conforme necessário.