Numpy "Where" função não pode evitar avaliar Sqrt (negativo)

Parece que onp.where função @ avalia todos os resultados possíveis primeiro e depois avalia a condição posteriormente. Isso significa que, no meu caso, ele avaliará a raiz quadrada de -5, -4, -3, -2, -1, mesmo que não seja usado mais tard

Meu código é executado e funciona. Mas meu problema é o aviso. Evitei usar um loop para avaliar cada elemento, porque ele será muito mais lento quenp.where.

Então, aqui estou perguntando

Existe alguma maneira de fazernp.where avaliar a condição primeiro? Posso desligar apenas este aviso específico? Quão Outra maneira melhor de fazer isso, se você tiver uma sugestão melho

Aqui apenas um pequeno exemplo de código correspondente ao meu código real, que é gigantesco. Mas essencialmente tem o mesmo problema.

Entrada

import numpy as np

c=np.arange(10)-5
d=np.where(c>=0, np.sqrt(c) ,c )

Saída

RuntimeWarning: invalid value encountered in sqrt
d=np.where(c>=0,np.sqrt(c),c)

questionAnswers(4)

yourAnswerToTheQuestion