异步表:从另一个表设置数据类型

问题描述

我有一个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)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...