2016-02-14 4 views
1

, так что я пытаюсь создать цикл, который добавляет массив на основе соответствия SpecObjIDS и добавляет массивы звезд из их соответствующих массивов «VESPA_ID_SM_Array [:, 1]», «Celestial_Matrix [ :, 4] "Добавление массива с соответствующими каталогами

VESPA_ID_SM_Array=np.array(np.genfromtxt('C:\\Python12\\Vespa_SM.csv\\results13_19_37_44_33.csv', delimiter=',')) 

^Этот файл содержит 2 колонки. Первый столбец содержит «SpecObjID» для каталога VESPA, а второй столбец содержит значения звездной массы для каждого идентификатора.

SpecObjID=SpecObj_Table.field(47) содержит один столбец, который является «SpecObjID» для Sloan Digital Sky Survey Catalog.

ПРИМЕЧАНИЕ. SpecObjID для каталога VESPA является ТОЛЬКО как SpecObjID для каталога SDSS.

«Celestial_Matrix [:, 4]» - это массив, который я ранее создал, а пятая колонка содержит звездную массу . Выберите галактики из обзора 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

Ошибка 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.