Wie kann ich das Produkt aller Elemente in einem eindimensionalen numply Array erhalten

8

Ich habe ein eindimensionales NumPy-Array:

%Vor%

Ich hätte gerne das Produkt aller Elemente, 18 in diesem Fall.

Der einzige Weg, wie ich das finden könnte, wäre:

%Vor%

Was hübsch aussieht, aber nicht sehr schnell ist (ich muss das oft machen).

Gibt es eine numpy Methode, die das tut? Wenn nicht, was ist der effizienteste Weg, dies zu tun? Meine realen Welt-Arrays haben 39 Float-Elemente.

    
Peter Smit 18.03.2011, 08:25
quelle

2 Antworten

13

In NumPy können Sie versuchen:

%Vor%

Für ein größeres Array numpy.arange(1,40) / 10. :

%Vor%

Ihr reduce(lambda x,y: x*y, a) benötigt 24.2μs,

numpy.prod(a) benötigt 3,9μs.

BEARBEITEN: a.prod() benötigt 2.67μs. Danke an J. F. Sebastian!

    
eumiro 18.03.2011, 08:32
quelle
0

Oder wenn der Verlust der numerischen Genauigkeit kein Problem ist, können wir tun

%Vor%     
dontloo 14.09.2016 12:37
quelle

Tags und Links