问题描述
我有一个astropy.Table
,叫它T
:
a b c d
int32 float64 str1 float64
----- ------- ---- -------
1 2.0 0 10.0
4 5.0 1 20.0
5 8.5 2 30.0
我想从一个numpy数组创建另一个表,但其列和数据类型与T
import numpy as np
A = np.array([
[1,2,3,4],[5,6,7,8]])
我可以创建一个具有相同列名的表
S = Table(A,names=T.colnames)
但是如果我也尝试传递数据类型
S = Table(A,names=T.colnames,dtype=T.dtype)
然后我得到一个错误ValueError: dtype must be a list or None
,而list(T.dtype)
仅返回TypeError: 'numpy.dtype' object is not iterable
如何将数据类型从一个表传递到另一个表?
解决方法
您可以使用最新版的astropy来做到这一点:
Table(A,names=T.colnames,dtype=[T[name].dtype for name in T.colnames])
这在astropy的主分支中已得到改进,在astropy的下一发行版4.2中,您可以简单地进行以下操作:
Table(A,dtype=T.dtype)