了解在 NumPy 数组上执行条件索引时的 DeprecationWarning 错误(版本 1.11.13,Python 2.7)
Understanding DeprecationWarning errors when performing conditional indexing on a NumPy array (version 1.11.13, Python 2.7)
我不明白在 Numpy 数组上执行条件索引时出现弃用警告错误,希望得到一些说明,希望它也能对社区有所帮助。让我们考虑一个名为 'block' 的 NumPy 数组,其中包含从 1 到 12 的整数:
block = np.arange(1,13)
我可以 select 不同于 4 的值:
selection = block[block != 4]
现在我想要 select 不同于 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 数组)?
请注意 select = 2 在警告之后,我也不明白。
您正在做的事情的正确代码是:
selection = block[~np.isin(block, [1, 4, 7])]
我不明白在 Numpy 数组上执行条件索引时出现弃用警告错误,希望得到一些说明,希望它也能对社区有所帮助。让我们考虑一个名为 'block' 的 NumPy 数组,其中包含从 1 到 12 的整数:
block = np.arange(1,13)
我可以 select 不同于 4 的值:
selection = block[block != 4]
现在我想要 select 不同于 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 数组)? 请注意 select = 2 在警告之后,我也不明白。
您正在做的事情的正确代码是:
selection = block[~np.isin(block, [1, 4, 7])]