Check if numpy array is in list of numpy arrays Check if numpy array is in list of numpy arrays numpy numpy

Check if numpy array is in list of numpy arrays


Using the verb is when talking about python is a bit ambiguous. This example covers all the cases I could think of:

from __future__ import print_functionfrom numpy import array, array_equal, allclosemyarr0 = array([1, 0])myarr1 = array([3.4499999, 3.2])mylistarr = [array([1, 2, 3]), array([1, 0]), array([3.45, 3.2])]#test for identity:def is_arr_in_list(myarr, list_arrays):    return next((True for elem in list_arrays if elem is myarr), False)print(is_arr_in_list(mylistarr[2], mylistarr)) #->Trueprint(is_arr_in_list(myarr0, mylistarr)) #->False#myarr0 is equal to mylistarr[1], but it is not the same object!#test for exact equalitydef arreq_in_list(myarr, list_arrays):    return next((True for elem in list_arrays if array_equal(elem, myarr)), False)print(arreq_in_list(myarr0, mylistarr)) # -> Trueprint(arreq_in_list(myarr1, mylistarr)) # -> False#test for approximate equality (for floating point types)def arreqclose_in_list(myarr, list_arrays):    return next((True for elem in list_arrays if elem.size == myarr.size and allclose(elem, myarr)), False)print(arreqclose_in_list(myarr1, mylistarr)) #-> True

PS:do NOT use list for a variable name, as it is a reserved keyword, and often leads to subtle errors. Similarly, do not use array.


lets say you have an array like this:

a= [array([ 1, 24,  4, 5]), array([ 22,   4, 123]), array([11,  1,  1])]#convert all subarrays to lista= [ list(item) for item in a ]

no you can check for a sublist like this:

In [80]: [1,22,4] in aOut[80]: FalseIn [81]: [1,24,4,5] in aOut[81]: True


There is a much simpler way without the need to loop using np.all(). It only works when all the arrays within the list of arrays have the same shape:

list_np_arrays = np.array([[1., 1.], [1., 2.]])array_to_check = np.array([1., 2.])is_in_list = np.any(np.all(array_to_check == list_np_arrays, axis=1))

The variable is_in_list indicates if there is any array within he list of numpy arrays which is equal to the array to check.