0

から Table オブジェクトを構築しようとしています。astropy.table今のところ、追加する列は 1 つだけですが、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,)
4

1 に答える 1

1

引数は、names列数と同じ長さの名前文字列のコレクションである必要があります。Python での which は(括弧は無視されます)names=('mDM')と同等であると書きました。names='mDM'

あなたが意図したのは、Pythonで書かれた1要素のタプルだったと思います('mDM',)(コンマに注意してください)。これは、式をグループ化するために使用される括弧によるあいまいさを防ぐためです。または、リストを使用することもできます: names=['mDM']

于 2014-02-13T16:28:18.437 に答える