1

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

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

所以这个数组的每一“行”都是一个 8 字符的字符串,一个 16 位整数的 3 元素子数组,以及一个浮点数的 3 元素子数组。我想在文本文件中每行有一行,子数组的每个元素之间都有制表符。当我调用 savetxt 来导出填充的数组时,我将向 fmt 参数提供什么以防止它引发异常?

4

1 回答 1

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')
于 2013-07-31T16:55:02.490 回答