2017-05-27 1 views
3

Je veux multiplier tous les éléments dans un tableau numpy. S'il y a un tableau comme [1,2,3,4,5], je veux obtenir la valeur de 1*2*3*4*5.Existe-t-il une méthode en numpy pour multiplier chaque élément d'un tableau?

J'ai essayé ceci en faisant ma propre méthode, mais la taille de tableau est très grande, cela prend beaucoup de temps à calculer car j'utilise numpy il serait utile si numpy supporte cette opération.

J'ai essayé de trouver à travers des documents numpy, mais j'ai échoué. Existe-t-il une méthode qui effectue cette opération? Si oui, existe-t-il un moyen d'obtenir des valeurs le long d'un rang dans une matrice?

Répondre

3

Je crois que ce dont vous avez besoin est, numpy.prod.

De l'documentation:

Exemples

Par défaut, calculer le produit de tous les éléments:

>>> np.prod([1.,2.]) 
2.0 

Même lorsque le tableau d'entrée est à deux dimensions:

>>> np.prod([[1.,2.],[3.,4.]]) 
24.0 

Mais on peut également spécifier l'axe sur lequel se multiplier:

>>> np.prod([[1.,2.],[3.,4.]], axis=1) 
array([ 2., 12.]) 

Donc, pour votre cas, vous avez besoin:

>>> np.prod([1,2,3,4,5]) 
120 
1

Vous pouvez utiliser quelque chose comme ceci:

import numpy as np 
my_array = np.array([1,2,3,4,5]) 
result = np.prod(my_array) 
#Prints 1*2*3*4*5 
print(result) 

Here is the documentation of numpy.prod
ci-dessous est un extrait de la liaison ci-dessus:

Par défaut, calculer le produit de tous les éléments:

>>> np.prod([1.,2.]) 
2.0 

Même lorsque le tableau d'entrée est à deux dimensions:

>>> np.prod([[1.,2.],[3.,4.]]) 
24.0 

Mais nous pouvons également spécifier l'axe sur lequel multiplier:

>>> np.prod([[1.,2.],[3.,4.]], axis=1) 
array([ 2., 12.]) 
+0

Bien que ce code puisse répondre à la question, fournir un contexte supplémentaire sur la façon dont et/ou pourquoi il résout le problème améliorerait la valeur à long terme de la réponse. –

+0

@DonaldDuck Bien sûr, mais la réponse ci-dessus couvre tout. En fait, le lien vers la documentation de numpy.prod couvre tout. Il a juste copié collé à partir de là et n'a rien dit d'autre. Jusqu'à ce qu'il revienne et édite sa réponse, seulement pour copier coller ma réponse dans le sien. – JeremiahBarrar

+1

Je ne suis pas sûr qu'il est approprié que vous copiez-collez à partir de la réponse acceptée. Je comprends que la réponse acceptée est copiée-collée à partir de la documentation, mais que vous copiez-collez la même chose et que votre réponse est presque identique à la réponse acceptée ne semble pas appropriée.Il n'était pas si clair que la réponse acceptée ait été copiée-collée de la documentation ainsi je l'ai édité pour le rendre clair. Mais vous ne devriez publier votre propre réponse que si votre solution est différente de l'autre. –