The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

weamagic

Пользователь
Пользователь
Июл 11, 2020
149
13
18
Win 7, Python 3.8
Добрый день. Почему-то не срабатывает проверка на выполнение условия в следующем коде:
Python:
def form_log(self, well, log, t, b):

        for w in base:

            if w.name == well:

                d = w.las_dt.iloc[:, 0]

                v, n = self.f_d(d, t, b)

                if v != None and n != None:

                    l = w.las_dt[log][v:n].to_numpy()

                    return l

    def calc(self):
        for w1, i in enumerate(l_well):

            for w2, j in enumerate(l_well):

                for k in l_log:

                    l1 = self.form_log(i, k, t, b)

                    l2 = self.form_log(j, k, t, b)

                    if l1 != None or l2 != None:

                        if len(l1) != 0 and len(l2) != 0 and len(l1) == len(l2):

                            c = pirs(l1, l2)[0]

                    else:

                        continue

Здесь base - массив объектов пользовательского класса.
Суть в том, чтобы проверять возвращает ли что-то первая функция и какой длины.
 
Последнее редактирование:

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Почему-то не срабатывает проверка на выполнение условия в следующем коде:
Скорее всего проблема в том, что в этой строке
Python:
if l1 != None or l2 != None:
вы сравниваете numpy.ndarray и None с помощью оператора !=.
Вот пример который воспроизводит ошибку (для наглядности):
Python:
import numpy as np


a = np.array([1, 2, 3])

if a != None:
    print(a)
Чтобы исправить ошибку можно использовать для сравнения оператор is:
Python:
if l1 is not None or l2 is not None:
 

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
971
219
43
20
Москва
Ну как минимум у тебя два цикла for с одним отступом во второй функции
 

weamagic

Пользователь
Пользователь
Июл 11, 2020
149
13
18
Ну как минимум у тебя два цикла for с одним отступом во второй функции
Это когда код копировал и лишнее выбрасывал из него. В исходнике всё нормально.
 

weamagic

Пользователь
Пользователь
Июл 11, 2020
149
13
18
Вопрос ещё актуален
 

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
971
219
43
20
Москва
Какое из условий не работает? Что выполнить чтобы увидеть это?
 

weamagic

Пользователь
Пользователь
Июл 11, 2020
149
13
18
Какое из условий не работает? Что выполнить чтобы увидеть это?
Первое. Проверка на наличие возвращенного значения.
l_log - список столбцов, по которым выполняется поиск.
 

weamagic

Пользователь
Пользователь
Июл 11, 2020
149
13
18
Скорее всего проблема в том, что в этой строке
Python:
if l1 != None or l2 != None:
вы сравниваете numpy.ndarray и None с помощью оператора !=.
Вот пример который воспроизводит ошибку (для наглядности):
Python:
import numpy as np


a = np.array([1, 2, 3])

if a != None:
    print(a)
Чтобы исправить ошибку можно использовать для сравнения оператор is:
Python:
if l1 is not None or l2 is not None:
Спасибо, помогло. Я частенько забываю про этот оператор( Привычка...
 

Форум IT Специалистов