у меня есть ошибка значения a.any () и a.all () в операторе if - PullRequest
0 голосов
/ 06 февраля 2020

Я получаю сообщение об ошибке. Файл

"C:/Users/user/tensorEnv/project.py", line 28, in <module>
    if N <= 100 :
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

Может кто-нибудь сказать мне, как использовать a.any() или a.all() или помочь мне решить эту проблему

import matplotlib.pyplot as plt
import numpy as np
r3=np.arange(1.11,10,0.1)
r1=1
r2=1.1
k=5
R1cond=3.36*10**(-3)
R2cond=(1/k)*(0.0727-(0.08/r3))
Rconv=(0.004)/(r3**2)
Rtotal=Rconv+R1cond+R2cond
qloss=975/Rtotal
t=176
Q=qloss*t
L0=[]
L0.append(Q)
L0=[x*10**(-3) for x in L0]
#E is the price of EDL in LBP/NW.h
#Eel is the electric price to pay
#t is the time of working hours of the furnace 22 business days
#E=Eel*qloss*t
L=[]
L1=[]
L2=[]
L3=[]
L4=[]
for N in L0:
        if N <= 100 :
                L.append(35*N)
        if N <= 300 and N > 100:
                L1.append( 55*N)
        if N <=400 and N > 300:
                L2.append(80*N)
        if N <= 500 and N > 400:
                L3.append(120*N)
        if N > 500 :
                L4.append(200*N)
plt.plot(L)
plt.plot(L1)
plt.plot(L2)
plt.plot(L3)
plt.plot(L4)
plt.show()

1 Ответ

1 голос
/ 06 февраля 2020

Когда код написан, переменная N хранит каждый элемент L0 для каждой итерации. Похоже, L0 - это список, содержащий Q, основанный на коде, предшествующем l oop. Это связано с линией r3 = np.arange().

Первое, что я хотел бы сделать, это подтвердить, что все работает так, как ожидалось. Например, добавив простой print(N) внутри l oop, чтобы подтвердить, что N действительно является массивом плавающих значений (т.е. Q):

for N in L0:
    print( N )
    ...

Предполагая, что все это ожидается, синтаксически некорректно сравнивать массив с одним значением, поэтому ошибка предполагает использование функций .all() или .any(). Это будет иметь следующий синтаксис, если мы проверяем, является ли любой элементов в N (и, следовательно, Q) больше или равно 100:

if ( N <= 100 ).any():
    ...

И следующее, если мы хотим проверить, является ли all элементов в N больше или равно 100:

if ( N <= 100 ).all():
    ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...