рдлреЗрд╕рдмреБрдХ рд╕рдореВрд╣ рдореЗрдВ рдПрдХ рдЪрд░реНрдЪрд╛ рдиреЗ рд╕рд╛рдордиреЗ рд▓рд╛рдпрд╛ рдХрд┐ рдПрдХ рдореМрдЬреВрджрд╛ рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдПрдХ рдирдИ, рдЦрд╛рд▓реА рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ dtype
:
>>> oldtable.dtype
dtype([('wavelength', '<f8'), ('flux', '<f4'), ('uncertainty', '<f4')])
>>> Table(dtype=oldtable.dtype)
<Table length=0>
wavelength flux uncertainty
float64 float32 float32
---------- ------- -----------
рдФрд░ рдЗрд╕реЗ рдЕрдзрд┐рдХ рдкреИрджрд▓ рдпрд╛рддреНрд░реА рддрд░реАрдХреЗ рд╕реЗ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдирд╛ рднреА рдЙрддрдирд╛ рд╣реА рд╕рдВрднрд╡ рд╣реИ
>>> newtable = Table(names=oldtable.colnames, dtype=[dt for n, dt in oldtable.dtype.descr])
рд▓реЗрдХрд┐рди рд╕реАрдзреЗ рдкреБрд░рд╛рдиреЗ dtype
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдпрджрд┐ names
рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИрдВ рддреЛ рдЗрди рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдлреЗрдВрдХ рджреЗрддрд╛ рд╣реИ:
>>> newtable = Table(names=oldtable.colnames, dtype=oldtable.dtype)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/derek/lib/python3.8/site-packages/astropy/table/table.py", line 621, in __init__
self._check_names_dtype(names, dtype, n_cols)
File "/Users/derek/lib/python3.8/site-packages/astropy/table/table.py", line 873, in _check_names_dtype
raise ValueError(f'{inp_str} must be a list or None')
ValueError: dtype must be a list or None
>>> newtable = Table(names=oldtable.colnames, dtype=oldtable.dtype.descr)
Traceback (most recent call last):
File "/Users/derek/lib/python3.8/site-packages/astropy/table/table.py", line 1088, in _convert_data_to_col
col = col_cls(name=name, data=data, dtype=dtype,
File "/Users/derek/lib/python3.8/site-packages/astropy/table/column.py", line 879, in __new__
self = super().__new__(
File "/Users/derek/lib/python3.8/site-packages/astropy/table/column.py", line 254, in __new__
if np.dtype(dtype).char == 'S':
TypeError: data type 'wavelength' not understood
рдРрд╕рд╛ рд╣реА рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм Table
рдХреЛ рдПрдХ рд╕реНрдЯреНрд░рдХреНрдЪрд░реНрдб рдРрд░реЗ рдХреЗ рд╕рд╛рде рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
Table
рдХреЛ рдпрд╛ рддреЛ рдЕрдзрд┐рдХ рд╕рд╛рд░реНрдердХ рддреНрд░реБрдЯрд┐ рджреЗрдиреА рдЪрд╛рд╣рд┐рдП, рдпрд╛ (рд╢рд╛рдпрдж рдЕрдзрд┐рдорд╛рдирддрдГ) рд╕рдВрд░рдЪрд┐рдд dtype
рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╕рдВрднрд╡рддрдГ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рд╕рд╛рде рдХрд┐ dtype.names
рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ names
рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
рдКрдкрд░ рджреЗрдЦреЛред рдЬрдмрдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдЕрдиреБрд╢рдВрд╕рд┐рдд рд╡рд┐рдзрд┐ newtable = oldtable[:0].copy()
рдХрд╛рдо рдХрд░рддреА рд╣реИ (рдФрд░ рдХрд┐рд╕реА рднреА unit
рдЧреБрдгреЛрдВ рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ рдХреЙрдкреА рдХрд░рдиреЗ рдХрд╛ рд▓рд╛рдн рд╣реИ), рдЕрдХреЗрд▓реЗ dtype
рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рдмреАрдЪ рд╡рд┐рд╕рдВрдЧрддрд┐рдкреВрд░реНрдг рд╡реНрдпрд╡рд╣рд╛рд░, рдФрд░ рд╕рд╛рде рдореЗрдВ names
рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ, рдФрд░ рдЕрдкрд╡рд╛рдж рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИрдВред
рдХреЛрдИ рдЕрдиреНрдп names
рдЬрд╛рдирдХрд╛рд░реА рдЙрдкрд▓рдмреНрдз рди рд╣реЛрдиреЗ рдкрд░ dtype
рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ "рдЕрдирдкреИрдХ" рдХрд░рддрд╛ рд╣реИ, рдФрд░ names
рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рднреА рдРрд╕рд╛ рд╣реА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рд▓реЗрдХрд┐рди dtype.names
рдЫреЛрдбрд╝рдХрд░, рдХреНрдпреЛрдВрдХрд┐ names
рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд▓реЗрдиреА рдЪрд╛рд╣рд┐рдП)ред
рдереЛрдбрд╝рд╛ рд╕рдВрдмрдВрдзрд┐рдд рдиреЛрдЯ рдкрд░, рддрд╛рд▓рд┐рдХрд╛ рдХреЙрд▓рдо рдХреЗ рд▓рд┐рдП рд╕рднреА рдЗрдХрд╛рдЗрдпреЛрдВ рдХреЛ рд╕реАрдзреЗ рдПрдХ рд░реВрдк рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдзрд┐ рд╣реЛрдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрдЧрд╛ рдЬрд┐рд╕реЗ units=
рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдмреЗрд╢рдХ рдХреЛрдИ newtable = oldtable[:0].copy()
рдкрджреНрдзрддрд┐ рдкрд░ рд▓реМрдЯ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдирд╛рдо рдпрд╛ рдкреНрд░рдХрд╛рд░ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рд╡рд╛рдВрдЫрд┐рдд рд╣реИ, рддреЛ рдРрд╕рд╛ рд╡рд┐рдХрд▓реНрдк рдХрд╛рдо рдЖрдПрдЧрд╛ред
рдПрд╕реНрдЯреНрд░реЛрдкреА рд╕рдВрд╕реНрдХрд░рдг 4.2.dev112+g595484597ред
рджрд┐рдирд╛рдВрдХ: 2020-05-22T19:44:39
рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо: macOS-10.12.6-x86_64-i386-64bit
рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп: /sw/bin/python3.8
рдкреВрд░реНрдг рдкрд╛рдпрдерди рд╕рдВрд╕реНрдХрд░рдг:
3.8.3 (рдбрд┐рдлрд╝реЙрд▓реНрдЯ, 14 рдордИ 2020, 22:17:35)
[рдХреНрд▓реИрдВрдЧ 9.0.0 (рдХреНрд▓реИрдВрдЧ-900.0.39.2)]
рдкреИрдХреЗрдЬ рд╕рдВрд╕реНрдХрд░рдг:
рд╕реБрдиреНрди: 1.19.0rc1
рд╕рд┐рд╕рд┐рдкреА: 1.4.1
рдорд╛рдЯрдкреНрд▓реЛрдЯрд▓рд┐рдм: 3.2.1
h5py: 2.9.0
рдкрд╛рдВрдбрд╛: рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ
рд╕рд╛рдЗрдерди: 0.29.16
рдзрдиреНрдпрд╡рд╛рдж! рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ oldtable
рдХреНрдпрд╛ рдерд╛? рдХреНрдпрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╕реНрдирд┐рдкреЗрдЯ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ?
import numpy as np
from astropy.table import Table
arr = np.ones(2, dtype=np.dtype([('A', 'i'), ('B', 'f4'), ('C', 'f8')]))
tab1 = Table(arr)
tab1
tab2 = Table(dtype=tab1.dtype)
tab2
tab3 = Table(names=['X', 'Y', 'Z'], dtype=[dt for n, dt in tab1.dtype.descr])
tab3
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрдЙрдЯрдкреБрдЯ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ:
<Table length=2>
A B C
int32 float32 float64
----- ------- -------
1 1.0 1.0
1 1.0 1.0
<Table length=0>
A B C
int32 float32 float64
----- ------- -------
<Table length=0>
X Y Z
int32 float32 float64
----- ------- -------
рдЬрдмрдХрд┐
>>> tab3 = Table(names=['X', 'Y', 'Z'], dtype=tab1.dtype)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/sw/lib/python3.8/site-packages/astropy/table/table.py", line 621, in __init__
self._check_names_dtype(names, dtype, n_cols)
File "/sw/lib/python3.8/site-packages/astropy/table/table.py", line 873, in _check_names_dtype
raise ValueError(f'{inp_str} must be a list or None')
ValueError: dtype must be a list or None
>>> tab3 = Table(names=['X', 'Y', 'Z'], dtype=tab1.dtype.descr)
Traceback (most recent call last):
File "/sw/lib/python3.8/site-packages/astropy/table/table.py", line 1088, in _convert_data_to_col
col = col_cls(name=name, data=data, dtype=dtype,
File "/sw/lib/python3.8/site-packages/astropy/table/column.py", line 879, in __new__
self = super().__new__(
File "/sw/lib/python3.8/site-packages/astropy/table/column.py", line 254, in __new__
if np.dtype(dtype).char == 'S':
TypeError: data type 'A' not understood
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/sw/lib/python3.8/site-packages/astropy/table/table.py", line 624, in __init__
init_func(data, names, dtype, n_cols, copy)
File "/sw/lib/python3.8/site-packages/astropy/table/table.py", line 955, in _init_from_list
col = self._convert_data_to_col(col, copy, default_name, dtype, name)
File "/sw/lib/python3.8/site-packages/astropy/table/table.py", line 1092, in _convert_data_to_col
raise ValueError('unable to convert data to Column for Table')
ValueError: unable to convert data to Column for Table
md5-9116051d321cf97db138d26f38a78850
>>> tab3 = Table(arr, dtype=tab1.dtype.descr)
Traceback (most recent call last):
File "/sw/lib/python3.8/site-packages/astropy/table/table.py", line 1088, in _convert_data_to_col
col = col_cls(name=name, data=data, dtype=dtype,
File "/sw/lib/python3.8/site-packages/astropy/table/column.py", line 879, in __new__
self = super().__new__(
File "/sw/lib/python3.8/site-packages/astropy/table/column.py", line 254, in __new__
if np.dtype(dtype).char == 'S':
TypeError: data type 'A' not understood
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/sw/lib/python3.8/site-packages/astropy/table/table.py", line 624, in __init__
init_func(data, names, dtype, n_cols, copy)
File "/sw/lib/python3.8/site-packages/astropy/table/table.py", line 1108, in _init_from_ndarray
self._init_from_list(cols, names, dtype, n_cols, copy)
File "/sw/lib/python3.8/site-packages/astropy/table/table.py", line 955, in _init_from_list
col = self._convert_data_to_col(col, copy, default_name, dtype, name)
File "/sw/lib/python3.8/site-packages/astropy/table/table.py", line 1092, in _convert_data_to_col
raise ValueError('unable to convert data to Column for Table')
ValueError: unable to convert data to Column for Table
#10419 рджреЗрдЦреЗрдВред