2011-11-19 10 views
28
S=[22, 33, 45.6, 21.6, 51.8] 
P=2.45 

Aquí S es una matriz¿Cómo se multiplican los elementos individuales de una lista con un número?

¿Cómo voy a multiplicar este y obtener el valor?

SP=[53.9, 80.85, 111.72, 52.92, 126.91] 
+5

En Python S no es una matriz, es una lista. Hay una gran diferencia entre los dos tipos de contenedores. Si quiere matrices numéricas, use numpy. – talonmies

+2

No, S ni siquiera es una lista – joaquin

+0

@joaquin: ¿Diga qué es 'S' entonces, si no es una lista? – talonmies

Respuesta

26

Se puede utilizar una función de map función:

result = map(lambda x: x * P, S) 

o list comprehensions que es un poco más Pythonic:

result = [x * P for x in S] 
+4

Como nota, las operaciones en matrices, como la multiplicación escalar están altamente optimizadas en numpy, y son significativamente más rápidas que las listas de comprensión. En general, es aconsejable no tratar las matrices numpy como las listas de Python. – JoshAdel

+0

Buen consejo. No he notado 'numpy' en las etiquetas. –

+1

Encuentro esas comprensiones completamente incomprensibles. –

46

En numpy es bastante simple

import numpy as np 
P=2.45 
S=[22, 33, 45.6, 21.6, 51.8] 
SP = P*np.array(S) 

Yo recomiendo echar un vistazo a la guía de aprendizaje numpy para una explicación de todas las capacidades de las matrices de numpy:

http://www.scipy.org/Tentative_NumPy_Tutorial

12

Si utiliza numpy.multiply

S = [22, 33, 45.6, 21.6, 51.8] 
P = 2.45 
multiply(S, P) 

Te da como resultado

array([53.9 , 80.85, 111.72, 52.92, 126.91]) 
Cuestiones relacionadas