尝试在Astropy中创建Table对象时的ValueError

时间:2014-02-12 14:36:51

标签: python astropy

我正在尝试从astropy.table构建一个Table对象,现在我只希望添加一列,但我得到一个ValueError

有谁知道我做错了什么?

>>> 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,)

1 个答案:

答案 0 :(得分:1)

names参数应该是长度等于列数的名称字符串的集合。你写了names=('mDM'),它在Python中相当于names='mDM'(括号被忽略)。

我认为你想要的是一个元素元组,在Python中编写('mDM',)(注意逗号)。这是为了防止用于对表达式进行分组的括号的歧义。或者您可以使用列表:names=['mDM']