Где функция в Python ничего не возвращает - PullRequest
2 голосов
/ 25 января 2012

У меня есть этот массив

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

Я применяю функцию where

     where(a==8)

В этом случае возвращается

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

Однако я бы хотел, чтобы код возвращал целое число "0" всякий раз, когда функция where возвращает пустой массив. Это возможно?

Ответы [ 4 ]

4 голосов
/ 25 января 2012
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() исправьте свой алгоритм

0 голосов
/ 16 мая 2019

пустой массив вернет 0 с .size

import numpy as np    
a = np.array([])    
a.size
>> 0
0 голосов
/ 11 января 2018

Попробуйте ниже.Это будет обрабатывать случай, когда проверка на равенство 0 не будет выполнена, когда возвращается индекс 0.(например, np.where(a==1) в приведенном ниже случае)

a = array([1,5,7])
ret = np.where(a==8)
ret = ret if ret[0].size else 0
0 голосов
/ 25 января 2012

Лучше использовать функцию, которая имеет только один тип возвращаемого значения.Вы можете проверить размер массива, чтобы узнать, пустой он или нет, что должно сработать:

 a = array([1,5,7])
 result = where(a==8)

 if result[0] != 0:
     doFancyStuff(result)
 else:
     print "bump"
...