Я немного озадачен, потому что это работало ранее, когда я запускаю код 1-2 года a go.
У меня большой структурированный массив numpy с различными типами данных и именами столбцов. Я могу сохранить его с помощью numpy .savetxt (), если я предоставлю строку формата (fmt), которая описывает типы данных каждого столбца. Однако, если я хочу сохранить выборку из нескольких столбцов в массиве [['col_name1', 'col_name2']] вместе со строкой fmt для двух столбцов, я получаю следующее сообщение об ошибке: ValueError: fmt имеет неправильный номер % форматов:% i% i
Вот пример.
Сохранение всего массива работает:
import numpy as np
arr = np.zeros(3, dtype=[('w', int), ('x', float), ('y', int), ('z', "i8")])
np.savetxt('works.txt', arr, fmt="%i %06f %i %i")
Сохранение двух столбцов этого не:
import numpy as np
arr = np.zeros(3, dtype=[('w', int), ('x', float), ('y', int), ('z', "i8")])
np.savetxt('ValueError.txt', arr[['w','y']], fmt="%i %i")
Это дает мне сообщение об ошибке:
ValueError: fmt имеет неверное количество форматов%:% i% i
У меня есть сценарии, которые сделать то же самое с большими структурированными массивами, и они работали, когда я использовал это 1-2 года a go.
Я понятия не имею, что происходит. После выбора столбца массив dtype объекта имеет дополнительные атрибуты смещения и размер элемента. Это вызывает ошибку?
In [131]: arr
Out[131]:
array([(0, 0., 0, 0), (0, 0., 0, 0), (0, 0., 0, 0)],
dtype=[('w', '<i8'), ('x', '<f8'), ('y', '<i8'), ('z', '<i8')])
In [132]: arr[['w','y']]
Out[132]:
array([(0, 0), (0, 0), (0, 0)],
dtype={'names':['w','y'], 'formats':['<i8','<i8'], 'offsets':[0,16], 'itemsize':32})
Как я могу это исправить? Спасибо!