在为每列定义fmt时,NumPy的savetxt不会导出分隔符

时间:2016-03-24 14:40:51

标签: python arrays numpy

所以我有一个名为final的数组,它被保存到带有标题的文本中。该数组使用numpy.column_stack构建,如下所示:

numpy.column_stack((SampNo, dummy, data, data1))

当我使用

numpy.savetxt(f, final, delimiter=',', fmt='%1.7f')

文本文件与分隔符一起正确保存。但是,我需要前两列是字符串而不是浮点数,当我使用时:

numpy.savetxt(f, final, delimiter=',', fmt='%s %s %1.7f %1.7f')

...逗号分隔符不再出现在文件中。

另外,我最后在两个%1.7f选项之后使用%s 8次,因为总共有10列。有没有更简洁的方法来做到这一点?

1 个答案:

答案 0 :(得分:2)

来自np.savetxt docstring:

fmt : str or sequence of strs, optional
    A single format (%10.5f), a sequence of formats, or a
    multi-format string, e.g. 'Iteration %d -- %10.5f', in which
    case `delimiter` is ignored.

如果使用多格式字符串方法,则需要在格式中手动指定分隔符。

除此之外,您可以将字符串乘以避免一些剪切和粘贴:

In [5]: "%s,%s" + ",%1.7f"*8
Out[5]: '%s,%s,%1.7f,%1.7f,%1.7f,%1.7f,%1.7f,%1.7f,%1.7f,%1.7f'