python中的函数返回什么都没有

时间:2012-01-25 12:30:30

标签: python numpy where

我有这个数组

     a = array([1,5,7])

我应用where函数

     where(a==8)

在这种情况下返回的是

    (array([], dtype=int64),)

但是,只要where函数返回一个空数组,我希望代码返回整数“0”。这可能吗?

4 个答案:

答案 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