Quero executar uma multiplicação por elementos, multiplicar duas listas por valor em Python, como podemos fazer no Matlab.
É assim que eu faria no Matlab.
a = [1,2,3,4]
b = [2,3,4,5]
a .* b = [2, 6, 12, 20]
Uma compreensão da lista daria 16 entradas na lista, para cada combinação x * y
de x
from a
e y
from b
. Não sabe como mapear isso.
Se alguém estiver interessado no motivo, tenho um conjunto de dados e quero multiplicá-lo por Numpy.linspace(1.0, 0.5, num=len(dataset)) =)
.
Respostas:
Use uma compreensão de lista combinada com
zip()
:.fonte
map(lambda x,y:x*y,lista,listb)
.listb
uma lista de elementos do tipo,listb
e precisarmos operar para obter uma única lista. Ex. (x, pi, e) com [(4, 5, 2), (1, 2, 4), (4, 5, 6), (1, 1, 2), (3, 3, 4)], quando tomado (x, pi, e) operado com (4, 5, 2) e depois (x, pi, e) operado com (1, 2, 4) ... etc.Como você já está usando
numpy
, faz sentido armazenar seus dados em umanumpy
matriz, e não em uma lista. Depois de fazer isso, você obtém itens como produtos baseados em elementos de graça:fonte
Use np.multiply (a, b):
fonte
Você pode tentar multiplicar cada elemento em um loop. A mão curta para fazer isso é
fonte
Ainda outra resposta:
-1
... requer importação+1
... é muito legívelsaídas [10, 22, 36, 52]
fonte
Maneira bastante intuitiva de fazer isso:
fonte
você pode multiplicar usando
lambda
fonte
Para listas grandes, podemos fazê-lo da maneira iterativa:
product_iter_object.next()
fornece cada um dos elementos na lista de saída.A saída seria o comprimento da menor das duas listas de entrada.
fonte
crie uma matriz de unidades; multiplique cada lista vezes a matriz; converter matriz em uma lista
fonte
A resposta de gahooa está correta para a pergunta formulada no cabeçalho, mas se as listas já tiverem um formato numpy ou maior que dez, será MUITO mais rápido (3 ordens de grandeza) e mais legível, para fazer a multiplicação numpy simples, conforme sugerido por NPE. Eu recebo estes horários:
ou seja, a partir do seguinte programa de teste.
fonte
Pode usar enumerar.
fonte
A
map
função pode ser muito útil aqui. Usandomap
podemos aplicar qualquer função a cada elemento de um iterável.Python 3.x
Claro:
é equivalente a
Para que possamos obter nossa solução via:
No Python 2.x
map()
significa: aplique uma função a cada elemento de um iterável e construa uma nova lista. No Python 3.x,map
construa iteradores em vez de listas.Em vez de
my_mul
podermos usar omul
operadorPython 2.7
Python 3.5 ou superior
Observe que, como
map()
constrói um iterador, usamos o*
operador de descompactação iterável para obter uma lista. A abordagem de descompactação é um pouco mais rápida que olist
construtor:fonte
Para manter o tipo de lista e faça-o em uma linha (depois de importar o numpy como np, é claro):
ou
fonte
você pode usar isso para listas do mesmo tamanho
fonte