Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

217
Vistas
Función de Python que actúa en la matriz proporcionada

Algunas funciones NumPy (por ejemplo, argmax o cumsum ) pueden tomar una matriz como un parámetro out opcional y almacenar el resultado en esa matriz. Disculpe mi comprensión menos que perfecta de la terminología aquí (que es lo que me impide buscar una respuesta en Google), pero parece que estas funciones de alguna manera actúan sobre variables que están más allá de su alcance.

¿Cómo transformaría esta función simple para que pueda out un parámetro como las funciones mencionadas?

 import numpy as np def add_two(a): return a + 2 a = np.arange(5) a = add_two(a)

Según tengo entendido, una versión reescrita de add_two() permitiría reemplazar la última línea anterior con

 add_two(a, out=a)
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

En mi opinión, lo mejor y más explícito es hacer lo que estás haciendo actualmente. Python pasa los valores, no las referencias como parámetros en una función, por lo que solo puede modificar objetos mutables.

Una forma sería hacer:

 import numpy as np def add_two(a, out): out[:] = a+2 a = np.arange(5) add_two(a, out=a) a

Producción:

 array([2, 3, 4, 5, 6])

NÓTESE BIEN. A diferencia de su solución actual, esto requiere que el objeto pasado como parámetro exista y sea una out

over 4 years ago · Santiago Trujillo Denunciar

0

La solución ingenua sería completar el búfer de la matriz de salida con el resultado de su cálculo:

 def add_two(a, out=None): result = a + 2 if out is None: out = result else: out[:] = result return out

El problema (si pudiera llamarlo así) es que todavía está generando la matriz intermedia y, en primer lugar, está pasando por alto los beneficios de preasignar el resultado. Un enfoque más matizado sería usar los parámetros de out de las funciones en su tubería numpy:

 def add_two(a, out=None): return np.add(a, 2, out=out)

Desafortunadamente, al igual que con la vectorización general, esto solo se puede hacer caso por caso, dependiendo de cuál sea el conjunto de operaciones deseado.

Aparte, esto no tiene nada que ver con el alcance. Los objetos de Python están específicamente disponibles para todos los espacios de nombres (aunque es posible que sus nombres no lo estén). Si se modifica un argumento mutable en una función, los cambios siempre serán visibles fuera de la función. Consulte, por ejemplo , "Menor asombro" y el Argumento predeterminado mutable .

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda