Будущее предупреждение происходит, когда вы делаете что-то вроде этого:
>>> numpy.asarray([1,2,3,None]) == None
В настоящее время возвращается False
, но я понимаю, что вернет массив, содержащий [False,False,False,True]
в будущей версии Numpy.
Как обсуждалось в списке обсуждений numpy, чтобы проверить a is None
.
Что меня смущает, так это поведение ключевого слова in
с 1D-массивом по сравнению со списком:
>>> None in [1,2,3,None]
True
>>> None in numpy.asarray([1,2,3,None])
__main__:1: FutureWarning: comparison to 'None' will result in an elementwise
object comparison in the future
False
>>> 1 in numpy.asarray([1,2,3,None])
True
EDIT (см. комментарии). На самом деле есть два разных вопроса:
- Почему это вызывает
FutureWarning
- что будет сравниваться с будущим поведениемNone in numpy.asarray(...)
с тем, что оно сейчас? - Почему разница в поведении
in
от alist
; могу ли я проверить, содержит ли мой массивNone
, не преобразовывая его в список или используя циклfor
?
Версия для Numpy - 1.9.1, Python 3.4.1