Это структурированный массив numpy , в котором «элементами» массива являются не одиночные значения с плавающей точкой, а триплеты (в данном случае) с плавающей точкой. Это происходит отчасти потому, что в общем случае, когда все столбцы имеют разный тип данных, исходный формат данных все еще сохраняется (3 столбца и 3 (возможно) разнородных строки). Вот почему форма имеет вид (3,)
.
. В этом случае вы можете безопасно преобразовать в однородный массив (3, 3)
, поскольку все столбцы имеют тип данных с плавающей запятой. Есть несколько способов сделать это, но одним из самых простых и безопасных является утилита structured_to_unstructured
.
Обновление: Теперь, когда я за компьютером, вот конкретный пример, основанный на вашем:
>>> f = io.BytesIO(b"""\
... a b c
... ------------------- ---- ---
... -0.6096212422044334 2.0 3.0
... -1.2192424844088667 10.0 3.0
... -5.4865911798399 9.0 3.0
... """)
>>> t = Table.read(f, format='ascii.fixed_width_two_line')
>>> t
<Table length=3>
a b c
float64 float64 float64
------------------- ------- -------
-0.6096212422044334 2.0 3.0
-1.2192424844088667 10.0 3.0
-5.4865911798399 9.0 3.0
>>> t.as_array()
array([(-0.60962124, 2., 3.), (-1.21924248, 10., 3.),
(-5.48659118, 9., 3.)],
dtype=[('a', '<f8'), ('b', '<f8'), ('c', '<f8')])
>>> a = np.lib.recfunctions.structured_to_unstructured(t.as_array())
>>> a
array([[-0.60962124, 2. , 3. ],
[-1.21924248, 10. , 3. ],
[-5.48659118, 9. , 3. ]])
>>> a.shape
(3, 3)