Ошибка значения: значение истинности массива с более чем одним элементом неоднозначно. Используйте.any() или.all() для датирования вопроса о ископаемом

#python #valueerror

#python #ошибка значения

Вопрос:

Я попытался написать фрагмент кода, когда заданный процент углерода по-прежнему равен C14, что составляет 35%, и вычислить, когда образовалось ископаемое. Я предполагаю, что оно находится между периодом полураспада и вдвое большим периодом полураспада, поэтому диапазон, который я предложил: Однако я получил сообщение об ошибке

 t=np.arange(5730,5730*2,1)

while t in range(5730,5730*2):
    if 0.5**(t/5700)>0.35:
        t =1
    else:
        break
        print(t)
 
 ---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-101-cb11e85c664a> in <module>
      4 t=np.arange(5730,5730*2,1)
      5 
----> 6 while t in range(5730,5730*2):
      7     if 0.5**(t/5700)>0.35:
      8         t =1

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

Ответ №1:

x в y не имеет смысла спрашивать в вашем сценарии

t в диапазоне (..) потребует, чтобы t было единственным значением, но его элементом

numpy делает какие-то странные вещи и, по сути, сообщает вам, что ожидает 1 значение, но у вас есть массив

Ответ №2:

Используйте цикл for вместо цикла while . Кроме того, вы печатаете t после торможения цикла, поэтому ваш t никогда не будет напечатан

Используйте это вместо:

 t = np.arange(5730,5730*2,1)

for t in range(5730,5730*2,1):
  
  if 0.5**(t/5700)>0.35:
    t =1
  else:
    print(t)
    break