Может быть, вы бы предпочли сделать что-то вроде этого:
# Column of row titles
rows = np.array(['row1', 'row2', 'row3'], dtype='|S20')[:, np.newaxis]
with open('test.csv', 'w') as f:
np.savetxt(f, np.hstack((rows, data)), delimiter=', ', fmt='%s')
Это неявное преобразование data
в массив строк и занимает около 200 мс на каждый миллион элементов в моем компьютере.
dtype '|S20'
означает строки из двадцати символов .Если оно слишком низкое, ваши номера будут разделены:
>>> np.asarray([123], dtype='|S2')
array(['12'],
dtype='|S2')
Другой вариант, который из моего ограниченного тестирования медленнее, но дает вам гораздо больший контроль и не имеет проблемы с прерыванием, будет использовать np.char.mod
, как
# Column of row titles
rows = np.array(['row1', 'row2', 'row3'])[:, np.newaxis]
str_data = np.char.mod("%10.6f", data)
with open('test.csv', 'w') as f:
np.savetxt(f, np.hstack((rows, str_data)), delimiter=', ', fmt='%s')