12 votes

Appeler une lambda avec un tableau numpy

Tout en me familiarisant avec numpy J'ai remarqué un comportement intéressant dans numpy tableaux :

import numpy as np

arr = np.array([1, 2, 3])
scale = lambda x: x * 3

scale(arr) # Gives array([3, 6, 9])

Cette situation est différente de celle des listes Python normales :

arr = [1, 2, 3]
scale = lambda x: x * 3

scale(arr) # Gives [1, 2, 3, 1, 2, 3, 1, 2, 3]

Je suis curieux de savoir comment cela est possible. Est-ce qu'un numpy Le tableau de la matrice surcharge l'opérateur de multiplication ou quelque chose comme ça ?

6voto

Crispin Points 1416

numpy.ndarray surcharges les * en définissant son propre __mul__ méthode. De même, pour les + , - , etc. Cela permet de faire de l'arithmétique vectorielle.

6voto

Shivkumar kondi Points 2834

Il s'agit de Surpassement opérateurs en numpy

Vous pouvez apprendre numpy.arry aquí

Concentrons-nous sur votre fonction lamda pour chacun d'entre eux ;

1. tableau numpy :

arr = numpy.array([1, 2, 3])
type(arr)
scale = lambda x: x * 3 
scale(arr)

prend chaque élément du tableau

2. liste normale :

a =[1,2,3]
type(a)
scale = lambda x: x * 3 
scale(a)

Ceci prend une liste complète comme x et multiplie la liste elle-même.

1voto

drorco Points 4880

Il s'agit de deux objets différents qui se comportent différemment lorsque vous utilisez l'opérateur * sur eux.

  1. Dans le premier cas, vous générez un tableau numpy. Dans ce cas, l'opérateur * a été surchargé pour effectuer une multiplication, c'est-à-dire que chaque élément sera multiplié par 3.

  2. Dans le second cas, vous générez une liste. Dans ce cas, l'opérateur * est traité comme un opérateur opérateur de répétition et la liste entière est répétée trois fois.

exemple de code :

type(np.array([1,2,3]))
type([1, 2, 3])

résultat :

list
numpy.ndarray

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X