2014-02-12 3 views
0

Я пытаюсь построить объект Table из astropy.table, сейчас я хочу добавить только один столбец, но я получаю ValueError.ValueError при попытке создать объект Table в Astropy

Кто-нибудь знает, что я делаю неправильно?

>>> br_data["mass"] 
array([ 49.65092267, 269.50829639, 51.37768973, ..., 1168.74318299, 
     1144.96728692, 1116.72595158]) 
>>> len(br_data["mass"]) 
122911 
>>> table = Table([br_data["mass"]], names=('mDM'), meta={'name': 'attempt'}) 
ERROR: ValueError: Arguments "names" and "dtype" must match number of columns [astropy.table.table] 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/local/lib/python2.7/dist-packages/astropy/table/table.py", line 1114, in __init__ 
    self._check_names_dtype(names, dtype, n_cols) 
    File "/usr/local/lib/python2.7/dist-packages/astropy/table/table.py", line 1207, in _check_names_dtype 
    .format(inp_str)) 
ValueError: Arguments "names" and "dtype" must match number of columns 
>>> 
>>> br_data["mass"].dtype 
dtype('float64') 
>>> br_data["mass"].shape 
(122911,) 
+0

Что делает '' br_data ["mass"]. Shape'' give? И '' br_data ["mass"]. Dtype''? – astrofrog

+0

dtype ('float64') и (122911,) – Ohm

ответ

1

names аргумент должен быть набор имен строк длиной, равной количеству столбцов. Вы написали names=('mDM'), который в Python эквивалентен names='mDM' (круглые скобки игнорируются).

Я думаю, что вы намеревались быть одним элементом кортежа, который в Python написан ('mDM',) (обратите внимание на запятую). Это делается для предотвращения двусмысленности с круглыми скобками, используемыми для группировки выражений. Или вы можете просто использовать список: names=['mDM'].

Смежные вопросы