Понимание ошибок DeprecationWarning при выполнении условной индексации для массива NumPy (версия 1.11.13, Python 2.7)
Я не понимаю ошибок предупреждения об устаревании при выполнении условной индексации массивов Numpy и буду благодарен за некоторые разъяснения, надеясь, что это также принесет пользу сообществу. Давайте рассмотрим массив NumPy с именем 'block', содержащий целые числа от 1 до 12:
block = np.arange(1,13)
Я могу выбрать значения, отличные от 4, выполнив:
selection = block[block != 4]
Теперь я хочу выбрать значения, отличные от 1, 4 и 7. Если я это сделаю:
selection = block[block != np.array([1, 4, 7])]
Я получаю следующую ошибку:
__main__:1: DeprecationWarning: elementwise != comparison failed; this will
raise an error in the future.
__main__:1: VisibleDeprecationWarning: using a boolean instead of an integer
will result in an error in the future
Может ли кто-нибудь объяснить причину этого предупреждения и указать правильный способ выполнения этого среза (в идеале, предлагаемое решение также должно быть применимо при попытке извлечь значения из большого массива numpy, которые отличаются от значений в другом большом массиве numpy)? Обратите внимание, что после предупреждения выберите = 2, чего я тоже не понимаю.
1 ответ
Правильный код для того, что вы делаете:
selection = block[~np.isin(block, [1, 4, 7])]