Numpy equivalente de list.index

En una función de bajo nivel que se llama muchas veces, necesito hacer el equivalente de list.index de python, pero con una matriz numpy. La función necesita regresar cuando encuentra el primer valor, y elevar ValueError de lo contrario. Algo como

>>> a = np.array([1, 2, 3])
>>> np_index(a, 1)
0
>>> np_index(a, 10)
Traceback (most recent call last):    
  File "<stdin>", line 1, in <module>
ValueError: 10 not in array

Quiero evitar un bucle de Python si es posible. @np.where no es una opción, ya que siempre recorre todo el conjunto; Necesito algo que se detenga una vez que se encuentre el primer índice.

EDITA: Información más específica relacionada con el problema.

Aproximadamente el 90% del tiempo, el índice que busco está en los primeros 1/4 a 1/2 de la matriz. Así que hay potencialmente un factor de aceleración de 2-4 en juego aquí. El otro 10% de las veces el valor no está en la matriz en absoluto.

Ya he perfilado cosas, y la llamada anp.where es el cuello de botella, ocupando al menos el 50% del tiempo de ejecución total.

o es esencial que genere unValueError; solo tiene que devolver algo que obviamente indica que el valor no está en la matriz.

Probablemente codificaré una solución en Cython, como se sugiere.

Respuestas a la pregunta(6)

Su respuesta a la pregunta