Преобразование строки из таблицы астропии в массив numpy - PullRequest
1 голос
/ 07 февраля 2020

У меня есть numpy таблица

<Table length=3>
  a     b  
int64 int64
----- -----
    1     3
    2     5
    4     7

И я хотел бы преобразовать строку в массив numpy. Но когда я пытаюсь, я получаю массив без измерений

In: np.array(mytable[0]).shape
Out: ()

, и если я делаю

myrow = mytable[0]
myrow[0]

, я получаю ошибку

IndexError: too many indices for array

Is там что-то вроде t[0].values я мог бы сделать, что бы вернуть array([1, 3])?

Ответы [ 2 ]

1 голос
/ 08 февраля 2020

Объект Table.Row предоставляет итератор для значений, поэтому вы можете сделать:

>>> np.array(list(t[0]))
array([1, 3])
1 голос
/ 07 февраля 2020

Когда вы нарезаете строку из таблицы в Astropy и конвертируете в ndarray, вы получаете обратно структурированный массив 0D, то есть атрибут shape пуст. Для общего решения numpy предоставляет метод structured_to_unstructured, который будет хорошо работать не только для одного среза строки.


>>> np.lib.recfunctions.structured_to_unstructured(np.array(t[0]))
array([1, 3])

>>> np.lib.recfunctions.structured_to_unstructured(np.array(t[1:]))
array([[2, 5],
       [4, 7]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...