我有一些数据从Im从h5文件中读取为一个numpy数组,并且正在做一些分析。就上下文而言,数据绘制了光谱响应曲线。我正在索引数据(以及为x轴创建的后续数组)以获取特定值或值范围。我没有做任何复杂的事情,即使我正在做的小数学也很基础。但是我在许多地方收到以下警告错误
“VisibleDeprecationWarning: bool 索引与沿维度0的索引数组不匹配;维度为44,但相应的 bool 维度为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]
最佳答案
关于此警告的先前问题:
VisibleDeprecationWarning: boolean index did not match indexed array along dimension 1; dimension is 2 but corresponding boolean dimension is 1
https://stackoverflow.com/a/34296620/901925
我认为这是numpy 1.10中的新功能,并且是使用比数组短的 bool 索引的结果。我没有安装该版本,因此无法举一个例子。但是在以前的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])
即使
ind
比x
短,也可以正常运行。它有效地用ind
填充False
。我认为较新的版本会继续进行计算,但是会发出此警告。我需要找到一个可以更改此内容的提交或一个讨论它的SO问题。可以禁止显示警告-请参见侧栏。但是您确实应该检查有问题的数组的形状。它们匹配吗,还是 bool 索引太短?你能纠正吗?
Github讨论
https://github.com/numpy/numpy/issues/4980 bool 数组索引静默失败#4980
拉取要求
https://github.com/numpy/numpy/pull/4353 DEP:弃用形状不匹配的 bool 数组索引#4353
要禁止显示警告,请使用类似以下内容的内容:
import warnings
warnings.filterwarnings("ignore", category=np.VisibleDeprecationWarning)
您可能需要调整类别名称以使其正确。
关于arrays - 可见的弃用警告...?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35465176/