How to multiply numpy 2D array with numpy 1D array?

Question:

The two arrays:

a = numpy.array([[2,3,2],[5,6,1]])
b = numpy.array([3,5])
c = a * b

What I want is:

c = [[6,9,6],
     [25,30,5]]

But, I am getting this error:

ValueError: operands could not be broadcast together with shapes (2,3) (2)

How to multiply a nD array with 1D array, where len(1D-array) == len(nD array)?

Asked By: Ashwin Nanjappa

||

Answers:

You need to convert array b to a (2, 1) shape array, use None or numpy.newaxis in the index tuple:

import numpy
a = numpy.array([[2,3,2],[5,6,1]])
b = numpy.array([3,5])
c = a * b[:, None]

Here is the document.

Answered By: HYRY

Another strategy is to reshape the
second array, so it has the same number of dimensions as the first array:

c = a * b.reshape((b.size, 1))
print(c)
# [[ 6  9  6]
#  [25 30  5]]

Alternatively, the shape attribute of the second array can be modified in-place:

b.shape = (b.size, 1)
print(a.shape)  # (2, 3)
print(b.shape)  # (2, 1)
print(a * b)
# [[ 6  9  6]
#  [25 30  5]]
Answered By: Mike T
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.