在保持数组形状的同时使用numpy.savetxt

时间:2017-07-11 12:09:41

标签: python arrays numpy

使用numpy.savetxt将数据保存为连续线,如何保留数组的形状

示例:

    arr = np.array([[1,'some',3,4],
                    [5,'wo,dy',7,8],
                    [9,'word',11,12]])

    np.savetxt('example.csv',arr,fmt=('%s'),delimiter='\t')

(为什么制表符分隔? - 其中一些真正的文字中有逗号)

example.csv如下所示:

    1   some    -3.0    4   5   wo,dy   -7.0    8   9   word    -11.0   12

我怎么能让它看起来像这样:

    1   some    -3.0    4   
    5   wo,dy   -7.0    8   
    9   word    -11.0   12

(这样我可以把它读成excel或SQL吗?)

1 个答案:

答案 0 :(得分:1)

如果arr确实如图所示,savetxt应该没有问题:

In [647]: arr = np.array([[1,'some',3,4],
     ...:                     [5,'wo,dy',7,8],
     ...:                     [9,'word',11,12]])

In [648]: 
In [648]: arr
Out[648]: 
array([['1', 'some', '3', '4'],
       ['5', 'wo,dy', '7', '8'],
       ['9', 'word', '11', '12']], 
      dtype='<U11')

In [650]: np.savetxt('text.txt', arr, fmt='%13s', delimiter=';')

In [651]: cat text.txt
            1;         some;            3;            4
            5;        wo,dy;            7;            8
            9;         word;           11;           12

'\ t`也能正常工作。

除非您先将数组展平,否则指定newline参数,否则我看不出如何获得一行。它也不会将'3'改为'-3.0'。

通过混合使用字符串和数字,数组也可以是对象dtype或结构化的。但正如所写,它是一个字符串类型的数组。 '%s'是正确的格式化程序。