Como posso fazer uma função numpy que aceita um array numpy, iterable ou escalar?

Suponha que eu tenha isto:

def incrementElements(x):
   return x+1

mas eu quero modificá-lo para que ele possa usar um array numpy, iterable ou escalar, e promover o argumento para um array numpy e adicionar 1 a cada elemento.

Como eu pude fazer isso? Eu suponho que eu poderia testar a classe de argumentos, mas isso parece ser uma má ideia. Se eu fizer isso:

def incrementElements(x):
   return numpy.array(x)+1

Ele funciona corretamente em matrizes ou iteráveis, mas não em escalares. O problema aqui é quenumpy.array(x) para escalar x produz algum objeto estranho contido por um array numpy mas não é um array "real"; se eu adicionar um escalar a ele, o resultado será rebaixado para um escalar.

questionAnswers(3)

yourAnswerToTheQuestion