¿Cómo puedo hacer una función numpy que acepte una matriz numpy, una iterable o una escalar?
Supongamos que tengo esto:
def incrementElements(x):
return x+1
pero quiero modificarlo para que pueda tomar una matriz numpy, una iterable o un escalar, y promueva el argumento a una matriz numpy y agregue 1 a cada elemento.
¿Cómo podría hacer eso? Supongo que podría probar la clase de argumento, pero eso parece una mala idea. Si hago esto:
def incrementElements(x):
return numpy.array(x)+1
Funciona correctamente en matrices o iterables pero no en escalares. El problema aquí es quenumpy.array(x)
para scalar x produce algún objeto extraño que está contenido por una matriz numpy pero no es una matriz "real"; si le agrego un escalar, el resultado se reduce a un escalar.