Таблицы астропии: задайте тип данных из другой таблицы

#python-3.x #numpy #astropy

#python-3.x #numpy #astropy

Вопрос:

У меня есть один 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

Как я могу передать типы данных из одной таблицы в другую?

Ответ №1:

Вы можете сделать это с текущей версией astropy:

 Table(A, names=T.colnames, dtype=[T[name].dtype for name in T.colnames])
  

Это уже улучшено в основной ветке astropy, и в следующем выпуске версии 4.2 astropy вы можете сделать просто:

 Table(A, dtype=T.dtype)