在NumPy数组上执行条件索引时(版本1.11.13,Python 2.7),了解DeprecationWarning错误

时间:2018-07-13 23:39:04

标签: python numpy indexing numpy-slicing

在对Numpy数组执行条件索引时,我不理解“弃用警告”错误,希望您能对此加以澄清,希望它也将对社区有所帮助。让我们考虑一个名为“ block”的NumPy数组,其中包含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 个答案:

答案 0 :(得分:1)

您正在执行的操作的正确代码是:

selection = block[~np.isin(block, [1, 4, 7])]