可见的弃用警告......?

Nat*_*mas 7 arrays warnings numpy h5py

我有一些数据,我从一个h5文件读取作为一个numpy数组,我正在进行一些分析.对于上下文,数据绘制光谱响应曲线.我正在索引数据(以及我为x轴做的后续数组)以获取特定值或值范围.我没有做任何复杂的事情,即使是我正在做的小数学也是非常基础的.但是,我在许多地方收到以下警告错误

"VisibleDeprecationWarning:布尔索引与维度0的索引数组不匹配;维度为44但对应的布尔维度为17"

即使我检查它时输出的结果是正确的.

有人可以解释这个警告意味着什么,我是否需要比现在更关注它?

我不确定示例代码会对此有所了解,但看到它是我索引和切片数组时发生的警告,无论如何都是这样的:

data = h5py.File(file,'r')
dset = data['/DATA/DATA/'][:]
vals1 = dset[0]

AVIRIS = numpy.linspace(346.2995778, 2505.0363678, 432)
AVIRIS1 = AVIRIS[vals1>0]
AVIRIS1 = AVIRIS[vals1<1]
Run Code Online (Sandbox Code Playgroud)

hpa*_*ulj 13

以前关于此警告的问题:

VisibleDeprecationWarning:布尔索引与维度1的索引数组不匹配; dimension是2但对应的boolean维度是1

/sf/answers/2400763431/

我认为这是numpy 1.10中的新东西,并且是使用比数组短的布尔索引的结果.我没有安装该版本,所以无法给出一个例子.但在早期的numpy

In [667]: x=np.arange(10)
In [668]: ind=np.array([1,0,0,1],bool)
In [669]: ind
Out[669]: array([ True, False, False,  True], dtype=bool)
In [670]: x[ind]
Out[670]: array([0, 3])
Run Code Online (Sandbox Code Playgroud)

运行正常,即使ind比短x.它有效地垫indFalse.我认为较新版本继续进行计算,但发出此警告.我需要找到一个改变这个的提交或一个讨论它的SO问题.

可以抑制警告 - 请参阅侧栏.但你真的应该检查有问题的数组的形状.它们匹配,还是布尔索引太短?你能纠正吗?

Github讨论

https://github.com/numpy/numpy/issues/4980布尔数组索引无声地失败#4980

拉请求

https://github.com/numpy/numpy/pull/4353 DEP:弃用不匹配形状的布尔数组索引#4353

要禁止警告,请使用以下内容:

import warnings
warnings.filterwarnings("ignore", category=np.VisibleDeprecationWarning) 
Run Code Online (Sandbox Code Playgroud)

您可能需要调整类别名称才能使其正确.


Mat*_*tW. 5

要抑制警告,您可以:

  1. (邪恶)

将这样的内容添加到您.bashrc或您设置环境变量的任何地方以关闭全局可见的弃用警告:

export PYTHONWARNINGS="ignore::DeprecationWarning:simplejson"

  1. (坏的)

运行单个脚本时关闭警告:

python -W ignore thisbetterworks.py

  1. (好吧)

在没有警告的情况下运行块:

import warnings with warnings.catch_warnings(): warnings.warn("Let this be your last warning") warnings.simplefilter("ignore") < your code >

当然,当弃用变为不存在时,您确实会面临失败的风险,因此您可能希望确保它不会以长期代码告终。