#python #arrays #numpy
#python #массивы #numpy
Вопрос:
У меня есть структурированный 2D массив numpy формы: [2,2]
заполненный пример [2,2] массива:
Main_Clt_data_array :
[ [ ((10, 10), 20, 300.) ((20, 20), 20, 300.) ]
[((30, 30), 30, 300.) ((40, 40), 40, 300.)] ]
Он имеет следующий тип данных
Cord_dtype = np.dtype([('X', np.float64), ('Y', np.float64)])
Clt_data_dtype=np.dtype([('Coord', Cord_dtype),('Angle', np.float64), ('Length', np.float64)])
Используя np.savetxt
, я смог сохранить массив в текстовый файл, сохраняя ту же форму и порядок.
‘Trial.txt ‘ :
введите описание изображения здесь
но когда я пытаюсь читать в python с помощью genfromtxt, это не работает.: пример:
read_array = np.genfromtxt('Trial.txt',dtype=Clt_data_dtype)
ВЫВОД :
('READ_ARRAY_shape :', (2L,))
('READ_ARRAY :', array([((nan, nan), nan, nan), ((nan, nan), nan, nan)], 'V32'))
Надеюсь, что кто-нибудь сможет помочь мне и заранее спасибо за любой ввод
также обратите внимание, что я не могу использовать pandas, поскольку я использую его только для numpy compatable program
Комментарии:
1.
trial.txt
достаточно мал, чтобы вы могли скопировать и вставить его в вопрос. Нам это нравится гораздо больше, чем изображение. Какуюsavetxt
команду вы использовали?
Ответ №1:
In [17]: Cord_dtype = np.dtype([('X', np.float64), ('Y', np.float64)])
...: Clt_data_dtype=np.dtype([('Coord', Cord_dtype),('Angle', np.float64), ('Length', np.float64)])
Создание вашего массива:
In [18]: arr = np.array([ [ ((10, 10), 20, 300.), ((20, 20), 20, 300.) ],
...: [((30, 30), 30, 300.), ((40, 40), 40, 300.)] ], dtype=Clt_data_dtype)
...:
...:
In [19]: arr
Out[19]:
array([[((10., 10.), 20., 300.), ((20., 20.), 20., 300.)],
[((30., 30.), 30., 300.), ((40., 40.), 40., 300.)]],
dtype=[('Coord', [('X', '<f8'), ('Y', '<f8')]), ('Angle', '<f8'), ('Length', '<f8')])
In [20]: arr.shape
Out[20]: (2, 2)
genfromtxt
можно воссоздать его из csv
файла стиля, например:
In [21]: txt = """10 10 20 300.
...: 20 20 20 300.
...: 30 30 30 300.
...: 40 40 40 300.
...: """
In [22]: np.genfromtxt(txt.splitlines(), dtype=Clt_data_dtype)
Out[22]:
array([((10., 10.), 20., 300.), ((20., 20.), 20., 300.),
((30., 30.), 30., 300.), ((40., 40.), 40., 300.)],
dtype=[('Coord', [('X', '<f8'), ('Y', '<f8')]), ('Angle', '<f8'), ('Length', '<f8')])
На самом csv
деле это просто содержит строки и столбцы чисел. У него нет разделителей и ()
что ваши img
шоу. Возможно, можно проанализировать ваше изображение и создать файл, но csv
читатель не может справиться.