2015-08-07 3 views
0

Что я хочу: Я пытаюсь прочитать список из 6000 координат (ra и dec) и для каждого из них эти координаты у них 78 точек вокруг них. Я применяю угол (ang), а затем пытаюсь найти новые RA и DEC. Кажется, что проблема связана с z_sq = (x 2 + y 2), потому что я получил ошибку Неподдерживаемый тип операндов для ** или pow(): 'generator' и 'int'.Неподдерживаемый тип (ы) операнда для ** или pow(): 'generator' и 'int'

import matplotlib.pyplot as plt 
import numpy as np 
import pylab as py 

coords=np.genfromtxt('HETDEX_reg.txt',dtype=None,usecols=(0,1,2),names=  ('ra','dec','ang')) 
ra=coords['ra'] 
dec=coords['dec'] 
ang=coords['ang'] 

coords=np.genfromtxt('Ifus_78_base.txt', dtype=None, usecols=(0,1),  names=('xx', 'yy')) 
xx=coords['xx'] 
yy=coords['yy'] 

for i in range(len(ang)): 
    ang_new=360-ang[i] 
    x= (xx[j] for j in range(len(xx))) 
    y= (yy[j] for j in range(len(yy))) 
    z_sq=(x**2 + y**2) 
    z=np.sqrt(z_sq) 
    x_new=(np.deg2rad(x)) 
    y_new=(np.deg2rad(y)) 
    Theta=py.arctan(x_new/y_new) 
    Tau=90-ang[i]-Theta 
    Tau_rad=np.deg2rad(Tau) 
    Delta_Dec=z*py.sin(Tau_rad) 
    DEC=dec[i]+Delta_Dec 
    Delta_ra=z*py.cos(Tau_rad) 
    RA=ra[i]+Delta_ra/(py.cos(DEC/206205)) 

    print DEC 
    print RA 

я должен получать новый набор RA и DEC 78 раз (BC есть 78 х и у точек), для каждого оригинала ра и разл.

+0

В чем проблема? Каков ожидаемый результат и что вы получаете? Измените свой ответ, чтобы включить эту информацию. – TDG

+0

Неподдерживаемый тип (ы) операнда для ** или pow(): 'generator' и 'int' была полученной ошибкой. –

ответ

0

Так что проблема в:

x= (xx[j] for j in range(len(xx))) 
y= (yy[j] for j in range(len(yy))) 
z_sq=(x**2 + y**2) 

попробовать

In [29]: x=(j for j in range(10)) 

In [30]: z=x**2+x 
--------------------------------------------------------------------------- 
TypeError         Traceback (most recent call last) 
<ipython-input-30-c8ea7ceba90f> in <module>() 
----> 1 z=x**2+x 

TypeError: unsupported operand type(s) for ** or pow(): 'generator' and 'int' 

In [31]: x 
Out[31]: <generator object <genexpr> at 0xb2b411e4> 

Смотрите ошибка - x представляет собой генератор, созданный () выражением

x=[j for j in range(10)] является список (список постижение) , но все равно не работает. x должен быть массивом, который имеет метод **.

In [34]: x=np.array([j for j in range(10)]) 
In [35]: x**2 
Out[35]: array([ 0, 1, 4, 9, 16, 25, 36, 49, 64, 81]) 
Смежные вопросы