numpy.where()函数抛出FutureWarning,返回标量而不是列表

时间:2017-07-10 19:33:12

标签: python python-3.x numpy

我目前正在使用NumPy版本1.12.1,每次调用numpy.where()都会返回一个空列表,其中包含以下警告:

FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison

我正在比较字符串date_now和列表dates_list

np.where(date_now==dates_list)

这会导致错误,因为程序随后会调用期望numpy.where()输出为非空的函数。有人有解决方案吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

在当前比较中,您将整个列表对象dates_list与字符串date_now进行比较。这将导致元素比较失败并返回标量,就像您只是比较两个标量值一样:

date_now = '2017-07-10'    
dates_list = ['2017-07-10', '2017-07-09', '2017-07-08']    
np.where(dates_list==date_now, True, False)
Out[3]: array(0)

你想要的是将dates_list声明为NumPy数组以促进逐元素比较。

np.where(np.array(dates_list)==date_now, True, False)
Out[8]: array([ True, False, False], dtype=bool)