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

Qui S è una matriceCome moltiplicare i singoli elementi di una lista con un numero?

Come faccio a moltiplicare questo e ottenere il valore?

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

In Python S non è un array, è un elenco. C'è una grande differenza tra i due tipi di contenitori. Se vuoi array numerici, usa numpy. – talonmies

+2

No, S non è nemmeno una lista – joaquin

+0

@joaquin: Preghi dire che cosa 'S' è allora, se non è una lista? – talonmies

risposta

26

È possibile utilizzare built-in map funzione:

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

o list comprehensions che è un po 'più divinatorio:

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

Come nota, le operazioni sugli array, come la moltiplicazione scalare, sono altamente ottimizzate in numpy e sono significativamente più veloci delle list comprehensions. In genere è consigliabile non trattare gli array numpy come le liste di python. – JoshAdel

+0

Un buon consiglio. Non ho notato 'intorpidito' nei tag. –

+1

Trovo queste comprensioni completamente incomprensibili. –

46

In NumPy è abbastanza semplice

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

Vi consiglio di dare un'occhiata al tutorial NumPy per una spiegazione di tutte le funzionalità degli array di NumPy:

http://www.scipy.org/Tentative_NumPy_Tutorial

12

Se si utilizza numpy.multiply

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

ti dà come risultato

array([53.9 , 80.85, 111.72, 52.92, 126.91]) 
Problemi correlati