我正在尝试将一些数据从复杂的numpy计算导出到文本文件,以便我可以在Excel或其他东西中进行分析。我想要导出的数组的数据类型有点复杂,定义如下:
rowType = np.dtype([("SN", "S8"),
("Freqs", np.uint16, (3,)),
("Peaks", np.float32, (3,))])
因此,此数组的每个“行”都是一个8个字符的字符串,一个16位整数的3元素子数组和一个3元素的浮点子阵列。我希望文本文件中每行有一行,子数组的每个元素之间都有选项卡。当我调用savetxt导出已填充的数组时,我将向fmt参数提供什么以防止它抛出异常?
答案 0 :(得分:3)
格式代码适用于行中的每个元素。因为您将数组作为元素,所以您只能控制数组的格式,而不能控制单个元素。根据{{3}}的回答,你最好逐行打印数组。
如果您必须使用savetxt
,这将是您最接近您的请求:
np.savetxt(my_file, my_array, ['%s\t', '%s\t', '%s'])
但是,如果更改数据类型以展平单个数组,则可以控制每个元素的格式。以下是csv文件的示例:
new_dtype = [('SN', 'S8'), ('Freqs1', 'i'), ('Freqs2', 'i'), ('Freqs3', 'i'),
('Peaks1', 'f'), ('Peaks2', 'f'), ('Peaks3', 'f')]
np.savetxt(my_file, my_array.astype(new_dtype), '%s,%i,%i,%i,%f,%f,%f')