我有这个数组
a = array([1,5,7])
我应用where函数
where(a==8)
在这种情况下返回的是
(array([], dtype=int64),)
但是,只要where函数返回一个空数组,我希望代码返回整数“0”。这可能吗?
答案 0 :(得分:4)
def where0(vec):
a = where(vec)
return a if a[0] else 0
# The return above is equivalent to:
# if len(a[0]) == 0:
# return 0 # or whatever you like
# else:
# return a
a = array([1,5,7])
print where0(a==8)
在你的问题下也考虑来自 aix 的评论。而不是修复where()
,而是修复算法
答案 1 :(得分:0)
最好使用只有一种返回类型的函数。您可以检查数组的大小,以确定它是否为空,应该做的工作:
a = array([1,5,7])
result = where(a==8)
if result[0] != 0:
doFancyStuff(result)
else:
print "bump"
答案 2 :(得分:0)
一个空数组将以.size返回0
import numpy as np
a = np.array([])
a.size
>> 0
答案 3 :(得分:-2)
尝试以下方法。这将处理返回索引0时,等于0的测试将失败的情况。 (例如np.where(a==1
)在下面的例子中)
a = array([1,5,7])
ret = np.where(a==8)
ret = ret if ret[0].size else 0