在numpy中使用带有自定义数据类型的savetxt

时间:2013-07-31 16:08:07

标签: python numpy

我正在尝试将一些数据从复杂的numpy计算导出到文本文件,以便我可以在Excel或其他东西中进行分析。我想要导出的数组的数据类型有点复杂,定义如下:

rowType = np.dtype([("SN", "S8"),
                    ("Freqs", np.uint16, (3,)),
                    ("Peaks", np.float32, (3,))])

因此,此数组的每个“行”都是一个8个字符的字符串,一个16位整数的3元素子数组和一个3元素的浮点子阵列。我希望文本文件中每行有一行,子数组的每个元素之间都有选项卡。当我调用savetxt导出已填充的数组时,我将向fmt参数提供什么以防止它抛出异常?

1 个答案:

答案 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')