#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)