57
S = [22, 33, 45.6, 21.6, 51.8]
P = 2.45

Here S is an array

How will I multiply this and get the value?

SP = [53.9, 80.85, 111.72, 52.92, 126.91]
Georgy
  • 12,464
  • 7
  • 65
  • 73
bharath
  • 725
  • 1
  • 5
  • 7
  • 6
    In Python S is not an array, it is a list. There is a very big difference betweeb the two types of containers. If you want numerical arrays, use numpy. – talonmies Nov 19 '11 at 15:41

4 Answers4

77

In NumPy it is quite simple

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

I recommend taking a look at the NumPy tutorial for an explanation of the full capabilities of NumPy's arrays:

https://scipy.github.io/old-wiki/pages/Tentative_NumPy_Tutorial

Georgy
  • 12,464
  • 7
  • 65
  • 73
JoshAdel
  • 66,734
  • 27
  • 141
  • 140
41

You can use built-in map function:

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

or list comprehensions that is a bit more pythonic:

result = [x * P for x in S]
Tomáš Zato
  • 50,171
  • 52
  • 268
  • 778
KL-7
  • 46,000
  • 9
  • 87
  • 74
  • 9
    Just as a note, operations on arrays, like scalar multiplication are highly optimized in numpy, and are significantly faster than list comprehensions. It is generally advisable to not treat numpy arrays like python lists. – JoshAdel Nov 19 '11 at 16:20
  • "*It is generally advisable to not treat numpy arrays like python lists*", what does that mean in general? and how is it related to the current answer which doesn't use NumPy? Is this answer still true in 2021 (probably but still not sure, maybe some new operator has appeared to indicate we really want the distributive operation and not the list replication)? – mins Apr 29 '21 at 11:49
21

If you use numpy.multiply

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

It gives you as a result

array([53.9 , 80.85, 111.72, 52.92, 126.91])
nbro
  • 15,395
  • 32
  • 113
  • 196
DKK
  • 1,870
  • 4
  • 15
  • 22
1

Here is a functional approach using map, itertools.repeat and operator.mul:

import operator
from itertools import repeat


def scalar_multiplication(vector, scalar):
    yield from map(operator.mul, vector, repeat(scalar))

Example of usage:

>>> v = [1, 2, 3, 4]
>>> c = 3
>>> list(scalar_multiplication(v, c))
[3, 6, 9, 12]
Georgy
  • 12,464
  • 7
  • 65
  • 73