Я могу воспроизвести проблему с numpy 1.1 (но не с чем-то более новым).Очевидно, что лучше всего перейти на более свежую версию numpy.
Тем не менее, это похоже на использование np.bool
в качестве dtype, когда count=-1
(по умолчанию: чтение всех элементов в итераторе вместо номера набора).
AБыстрый обходной путь - просто создать его как массив int, а затем преобразовать его в логический массив:
cond = np.fromiter((x in [2] for x in [0, 1, 2]), dtype=np.int).astype(np.bool)
В качестве альтернативы можно преобразовать его в список, а затем установить count
на длинуlist (или просто используйте np.asarray
в списке):
items = list((x in [2] for x in [0, 1, 2]))
cond = np.fromiter(items, dtype=np.bool, count=len(items))
Очевидно, что оба они неоптимальны, но если вы не можете перейти на более свежую версию numpy, они будут работать.