मैं वर्तमान में बिना जाने क्यों 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
Julien Drevon 15 अप्रैल 2020, 18:04

1 उत्तर

सबसे बढ़िया उत्तर

समस्या यह है कि any अपने तर्क को दोहराने की कोशिश करता है।

व्यंजक bornes_test[i] <= x < bornes_test[i+1] एक अदिश numpy.bool_ देता है, एक सरणी नहीं।

इसलिए any(bornes_test[i] <= x < bornes_test[i+1]) एक अदिश पर पुनरावृति करने का प्रयास कर रहा है, जैसा कि त्रुटि संदेश द्वारा बताया गया है।

ऐसा लगता है कि आप केवल any को हटा सकते हैं और इच्छित परिणाम प्राप्त कर सकते हैं।

3
shadowtalker 15 अप्रैल 2020, 15:10