J'ai écrit une fonction pour résoudre cela qui gère également les cas multidimensionnels. (La réponse de @ecatmur fonctionne parfaitement en deux dimensions, mais échoue pour 1D ou 3D+)
import numpy as np
def haselement(arr,subarr):
'''Testez si subarr est égal à l'un des éléments de arr.
C'est l'équivalent de l'opérateur "in" lors de l'utilisation de listes au lieu de tableaux.'''
arr = np.asarray(arr)
subarr = np.asarray(subarr)
if subarr.shape!=arr.shape[1:]:
return False
elif arr.ndim<2:
return (subarr==arr).any()
else:
boolArr = (subarr==arr)
boolArr.resize([arr.shape[0],np.prod(arr.shape[1:])])
return boolArr.all(axis=1).any()
tableau = np.array(range(10), dtype = np.uint8)
tableau.shape = (5,2)
haselement(tableau,[0,1])
La 1D est gérée avec une instruction if, et la ND est gérée en redimensionnant le tableau en 2D afin que l'algorithme de @ecatmur fonctionne. Les autres façons auxquelles j'ai pensé pour résoudre cela impliquaient des compréhensions de liste ou des boucles (qui pourraient en fait être plus efficaces mais seulement si la liste est longue et que l'élément est près du début) ; quand même, cela semble plus numpy-thonic.
Vous pouvez également trouver la fonction ici si vous préférez l'utiliser à partir d'une bibliothèque :
https://github.com/davidmashburn/np_utils (déni évident, je suis l'auteur ;) )