所以我想要完成的是创建一个循环,它根据匹配的SpecObjIDS附加一个数组,并附加来自各自数组的恒星质量“VESPA_ID_SM_Array [:,1]”,“Celestial_Matrix [:,4]”< / p>
VESPA_ID_SM_Array=np.array(np.genfromtxt('C:\\Python12\\Vespa_SM.csv\\results13_19_37_44_33.csv', delimiter=','))
^此文件包含2列。第一列包含VESPA目录的“SpecObjID”,第二列包含每个ID的恒星质量值。
SpecObjID=SpecObj_Table.field(47)
包含一列,即Sloan Digital Sky Survey Catalog的“SpecObjID”。
注意:VESPA目录的SpecObjID与SDSS目录的SpecObjID相同。
“Celestial_Matrix [:,4]”是我之前创建的数组,第5列包含来自SDSS调查的选择星系的恒星质量。
我试图这样做的代码是:
SDSS_VESPA_SM=[]
for idy, y in SpecObjID:
for idy, y in enumerate(VESPA_ID_SM_Array[:,0]):
if SpecObjID[idy] == VESPA_ID_SM_Array[:,0][idy]:
SDSS_VESPA_SM.append([[idy],y , Celestial_Matrix[:,4][idy] ,VESPA_ID_SM_Array[:,1][idy]])
运行它时得到的错误是“'numpy.int64'对象不可迭代 “ 提前感谢大家的时间和帮助。
答案 0 :(得分:0)
当您尝试对标量值进行解构时,可能会引发is not iterable
错误。例如:
>>> x, y = 1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable
在这种情况下,罪魁祸首似乎是for idy, y in SpecObjID
。您正在循环的每个项目看起来都像是您尝试解压缩到idy, y
的标量。