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
我认为这是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.它有效地垫ind用False.我认为较新版本继续进行计算,但发出此警告.我需要找到一个改变这个的提交或一个讨论它的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)
您可能需要调整类别名称才能使其正确.
要抑制警告,您可以:
将这样的内容添加到您.bashrc或您设置环境变量的任何地方以关闭全局可见的弃用警告:
export PYTHONWARNINGS="ignore::DeprecationWarning:simplejson"
运行单个脚本时关闭警告:
python -W ignore thisbetterworks.py
在没有警告的情况下运行块:
import warnings
with warnings.catch_warnings():
warnings.warn("Let this be your last warning")
warnings.simplefilter("ignore")
< your code >
当然,当弃用变为不存在时,您确实会面临失败的风险,因此您可能希望确保它不会以长期代码告终。