Выбор элементов из массива на основе условия - PullRequest
1 голос
/ 02 ноября 2019

Это может быть простой вопрос, но, скажем, у нас есть массив:

a = [0,10,20]

Какой самый простой способ получить наименьшее значение, которое больше 0?. В этом случае это будет 10.

Ответы [ 5 ]

3 голосов
/ 02 ноября 2019

Я могу попробовать это без использования numpy.

def findValue():
    a = [0,10,5,20]
    a.sort()
    noToCheck = 0
    for i in a:
        if i > noToCheck :
            print("Found value: ", i)
            break

findValue()
3 голосов
/ 02 ноября 2019

Или min на генераторе:

min(x for x in a if x > 0)

Пример :

a = [0,10,20]

print(min(x for x in a if x > 0))
# 10
2 голосов
/ 02 ноября 2019

Не красиво

a = [0, 10, 20]


def find_lowest_num(a):
    lowest_num = None
    for element in a:
        if lowest_num is None and element > 0:
            lowest_num = element
        elif lowest_num is None and element == 0:
            pass
        else:
            if element < lowest_num and element > 0:
                lowest_num = element
    return lowest_num

print(find_lowest_num(a))

2 голосов
/ 02 ноября 2019

Поскольку вы включили Numpy в свои теги, я предполагаю, что вы согласны с решением с Numpy?

import numpy as np

a = np.array([0,10,20])

np.min(a[a > 0])

Out [1]: 10

1 голос
/ 02 ноября 2019

Вы можете использовать функцию min() с клавишей:

min(a, key=lambda x: float("inf") if x<=0 else x)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...