Ответ 1
Используйте numpy.genfromtxt
:
import numpy as np
np.genfromtxt('filename', dtype= None)
# array([(1, 2.0, 'buckle_my_shoe'), (3, 4.0, 'margery_door')],
# dtype=[('f0', '<i4'), ('f1', '<f8'), ('f2', '|S14')])
Скажем, у меня есть файл myfile.txt
, содержащий:
1 2.0000 buckle_my_shoe
3 4.0000 margery_door
Как импортировать данные из файла в массив numpy как int, float и string?
Я собираюсь получить:
array([[1,2.0000,"buckle_my_shoe"],
[3,4.0000,"margery_door"]])
Я играл со следующим безрезультатным:
a = numpy.loadtxt('myfile.txt',dtype=(numpy.int_,numpy.float_,numpy.string_))
EDIT: Другой подход может заключаться в использовании типа ndarray и последующем преобразовании.
b = numpy.loadtxt('myfile.txt',dtype=numpy.ndarray)
array([['1', '2.0000', 'buckle_my_shoe'],
['3', '4.0000', 'margery_door']], dtype=object)
Используйте numpy.genfromtxt
:
import numpy as np
np.genfromtxt('filename', dtype= None)
# array([(1, 2.0, 'buckle_my_shoe'), (3, 4.0, 'margery_door')],
# dtype=[('f0', '<i4'), ('f1', '<f8'), ('f2', '|S14')])
Pandas может сделать это за вас. Документы для функции, которую вы можете использовать, здесь.
Предполагая, что ваши столбцы разделены на вкладку, это должно сделать трюк (адаптированный из этого вопроса):
df = DataFrame.from_csv('myfile.txt', sep='\t')
array = df.values # the array you are interested in