2013-04-26 22 views
12

Obie tablice:Jak pomnożyć numpy tablicę 2D z numpy 1D array?

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

co chcę:

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

Ale ja dostaję ten błąd:

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

Jak pomnożyć tablicą nD z 1D tablica, gdzie len(1D-array) == len(nD array)?

Odpowiedz

15

trzeba przekształcić w tablicy B (2, 1) kształt tablicy należy użyć Brak lub numpy.newaxis w krotce index:

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

Oto document.

+0

Dzięki! Jaka jest nazwa tej składni w Pythonie: '[:, None]'? –

+1

@Ashwin, możesz wyszukać dla niego słowo "numpy.newaxis". – HYRY

+0

Dzięki! Zaakceptowałeś swoją odpowiedź :-) –

1

Inna strategia polega na reshape drugi układ , a więc ma taką samą liczbę wymiary co pierwszy układ:

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

Alternatywnie, atrybut drugiego układu shape można zmodyfikować w miejscu:

b.shape = (b.size, 1) 
print(a.shape) # (2, 3) 
print(b.shape) # (2, 1) 
print(a * b) 
# [[ 6 9 6] 
# [25 30 5]]