¿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.