我构造了一个函数,其中将字符串与字符串数组进行比较,如下例所示:
'A'==np.array(['A','B'])
array([ True, False], dtype=bool)
我想要的是布尔数组,但有时我与之比较的数组是空的,我得到一个警告。当我运行以下内容时,我能够重现FutureWarning:
'A'==np.array([])
/Users/fedgar01/anaconda/lib/python2.7/site-packages/ipykernel_launcher.py:1: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison
"""Entry point for launching an IPython kernel.
我应该忽略警告或我做错了什么?
答案 0 :(得分:1)
In [16]: np.array(['A','B'])
Out[16]:
array(['A', 'B'],
dtype='<U1')
In [17]: 'A'==np.array(['A','B'])
Out[17]: array([ True, False], dtype=bool)
In [18]: 'A'==np.array([])
/usr/local/bin/ipython3:1: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison
#!/usr/bin/python3
Out[18]: False
如果我指定了正确的字符串dtype,我得到空的布尔值:
In [19]: 'A'==np.array([],dtype='<U1')
Out[19]: array([], dtype=bool)
空数组的默认dtype是float;数字比较在没有警告的情况下运行:
In [20]: np.array([]).dtype
Out[20]: dtype('float64')
In [21]: 12.34==np.array([])
Out[21]: array([], dtype=bool)