Python3 вызывает ошибку массива, даже если я не использую массив. Возможно, мой синтаксис неправильный, но я не нахожу ошибку - PullRequest
0 голосов
/ 19 ноября 2018

Привет, я написал некоторый код для своих исследований по физике, и я довольно новичок в python.

Может кто-нибудь объяснить мне, почему

[код] при s <3,05 и t <1e-7: [/ code] </p>

триггеры

ValueError: Значение истинности массива с более чем одним элементом является неоднозначным. Используйте a.any () или a.all ()

Я довольно долго гуглил и искал в стеке, но понятия не имею, в чем проблема.

1 Ответ

0 голосов
/ 19 ноября 2018

Когда я копирую-вставляю код, если он работает (к счастью) и выдает сообщение об ошибке:

1231:~/mypy$ python3 stack53381357.py 
Traceback (most recent call last):
  File "stack53381357.py", line 105, in <module>
    Z = Ek(X, Y)
  File "stack53381357.py", line 67, in Ek
    while s < 3.05 and t < 1e-7 :
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

Обратите внимание, что полное сообщение говорит нам, где проблема - в Ekфункция в строке 67. Это важная информация.

Это подтверждает мой комментарий - Ek вызывается с аргументами массива и распространяется по циклу, изменяя s на массив.

Когда я добавляю печать в конец цикла Ek:

    print(type(s), s.shape)

Я получаю до появления ошибки:

<class 'numpy.ndarray'> (100, 100)

Итак, да, s изменилосьот скаляра до массива numpy, той же формы, что и массивы X и Y, которые вы передали Ek.

Кажется, что ваши 3 функции были написаны для скалярных входов.Я не собираюсь пытаться выяснить, как они должны работать с meshgrid входами.Вы можете перебирать элементы pa и Ea.Или вы можете изменить функции так, чтобы они вели себя при заданных значениях массива.По крайней мере,

while (s<3.05) and (t<1e-7):

должно быть записано, чтобы иметь смысл, когда s является массивом.Могут быть другие проблемы с входами массива.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...