Ошибка типа: 'numpy .bool_' объект не повторяется - PullRequest
1 голос
/ 15 апреля 2020

Я сейчас сталкиваюсь с TypeError: 'numpy.bool_' object is not iterable, не зная почему. Я проверил каждую переменную, которую я использовал. У вас есть идея, почему эта ошибка возникает? Вот мой упрощенный код, с которым вы можете играть:

import numpy as np


def rad_to_deg(x):
    deg = x*180/np.pi
    return deg

def flag_PA(x,bornes_test):  
    index_0_test = int(np.where(bornes_test==0)[0][0])
    for i in range(index_0_test):
        cond1 = any(bornes_test[i] <= x < bornes_test[i+1])
        cond2 = any(bornes_test[i]+180 <= x < bornes_test[i+1]+180)
        if np.logical_or(cond1,cond2)==True :
            flag_test=i 
    return flag_test


##################################### DATA READING ###########################

# Trouver les fichiers en Bande L et Bande N 


bornes_PA = np.linspace(-180,180,18+1)

lambda_fichier       = np.linspace(3E-6,11E-6)
u_coord_fichier      = np.linspace(1,40)
v_coord_fichier      = np.linspace(1,40)
baseline_fichier     = np.sqrt(np.array(u_coord_fichier)**2+np.array(v_coord_fichier)**2).tolist()
for l in range(len(lambda_fichier)):
    for b in range(len(baseline_fichier)):
        deg = rad_to_deg(np.arctan2(u_coord_fichier[b],v_coord_fichier[b]))
        result = int(flag_PA(deg,bornes_PA))

Вот полная ошибка:

  line 34, in <module>
    result = int(flag_PA(deg,bornes_PA))

  line 13, in flag_PA
    cond1 = any(bornes_test[i] <= x < bornes_test[i+1])

1 Ответ

3 голосов
/ 15 апреля 2020

Проблема в том, что any пытается перебрать свой аргумент.

Выражение bornes_test[i] <= x < bornes_test[i+1] возвращает скаляр numpy.bool_, а не массив.

Следовательно, any(bornes_test[i] <= x < bornes_test[i+1]) пытаясь перебрать скаляр, как указано в сообщении об ошибке.

Похоже, вы можете просто удалить any и получить желаемый результат.

...