Ответ 1
Проблема заключается в том, что когда два массива numpy сравниваются с ==, как и в методах remove() и index(), возвращается массив numpy из логических значений (сравнения элементов по элементам), который интерпретируется как неоднозначный. Хорошим способом сравнения двух массивов numpy для равенства является использование функции numpy array_equal().
Так как метод remove() списков не имеет ключевого аргумента (например, sort()), я думаю, что вам нужно сделать свою собственную функцию для этого. Вот то, что я сделал:
def removearray(L,arr):
ind = 0
size = len(L)
while ind != size and not np.array_equal(L[ind],arr):
ind += 1
if ind != size:
L.pop(ind)
else:
raise ValueError('array not found in list.')
Если вам нужно, чтобы он был быстрее, вы могли бы Cython -ize его.