[AstroPy] Constructing an astropy table with colnames and dtypes of existing table

Thomas Robitaille thomas.robitaille at gmail.com
Wed Apr 29 14:21:52 EDT 2015


On 29 April 2015 at 19:19, Aldcroft, Thomas
<aldcroft at head.cfa.harvard.edu> wrote:
>
>
> On Wed, Apr 29, 2015 at 2:13 PM, Aldcroft, Thomas
> <aldcroft at head.cfa.harvard.edu> wrote:
>>
>>
>>
>> On Wed, Apr 29, 2015 at 1:40 PM, Alexa Villaume <avillaum at ucsc.edu> wrote:
>>>
>>> Hi everybody,
>>>
>>> I’m trying to construct an astropy table using the exact same columns and
>>> corresponding dtypes of an existing table. The documentation goes into using
>>> existing columns but it wasn’t as clear to me on how to handle the data
>>> types. For example, I have an existing table ‘irtf’ and I want to make a
>>> table ‘irtf_hb’ if I do,
>>>
>>> irtf_hb = Table(names=irtf.colnames)
>>>
>>> the table is initialized with all the right column names but the dtypes
>>> are all floats. However, I can’t do this,
>>>
>>> irtf_hb = Table(names=irtf.colnames, dtype=irtf.dtype)
>>>
>>> Because I get an error, “ValueError: dtype must be a list or None”. I
>>> haven’t had any luck with trying to change the type of irtf.dtype or using
>>> list comprehension to extract a list of dtypes.
>>>
>>> Is there a simple way to use the dtypes of an existing table to
>>> initialize a new table?
>>
>>
>> You should be able to do:
>>
>> >>> irtf_hb = Table(irtf[0:0])
>>
>> This is a slight hack, but it's pretty simple and should give you a
>> zero-length table with all the original table properties.  I tested on a
>> simple case but haven't checked in detail.
>
>
> BTW, "all the original table properties" includes all column and table meta
> data (e.g. units), so this should be the preferred idiom.

How about a new class method that does something like
``np.empty_like`` called ``Table.empty_like``?

Cheers,
Tom

>
> - Tom
>
>>
>>
>> In [3]: from astropy.table import Table
>>
>> In [4]: t = Table([[1]])
>>
>> In [5]: t2 = Table(t[0:0])
>>
>> In [6]: t2
>> Out[6]:
>> <Table masked=False length=0>
>>  col0
>> int64
>> -----
>>
>> In [7]:
>>
>> - Tom
>>
>>>
>>>
>>> Thank you,
>>> Alexa
>>> _______________________________________________
>>> AstroPy mailing list
>>> AstroPy at scipy.org
>>> http://mail.scipy.org/mailman/listinfo/astropy
>>
>>
>
>
> _______________________________________________
> AstroPy mailing list
> AstroPy at scipy.org
> http://mail.scipy.org/mailman/listinfo/astropy
>



More information about the AstroPy mailing list