使用保存utf8编码文本numpy.savetx

2024-05-16 03:59:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我的意见:

??AAAAT 66.5939
??AAAAW 63.3312
??AAAAZ 63.3312
??AAAĄB 58.0579
??AAAĄD 81.3312
??AAAĄF 87.3312
??AAAĄG 64.5562
??AAAĄH 63.3687
??AAAĄK 81.3312
??AAAĄL 81.3312
??AAAĄM 81.3312
??AAAĄN 79.3312

我有一个脚本,它取第二列的平均值,从原始值中减去它,然后将修改后的列保存到另一个文件中:

^{pr2}$

现在,我正在尝试对一个记录数组执行相同的操作:

import numpy as np
def calculateAverage1():
    '''real values of leaves should be averaged over all possible leaves'''

    values = np.loadtxt("input/leaves.txt", dtype=[('key', 'S8'), ('val', 'f8')])

    values['val'] -= np.mean(values['val'])

    np.savetxt("output/leaves.txt", values, fmt='%s %f')

第一个脚本的输出看起来就像我用emacs或其他编辑器打开它时的输入。第二个脚本的输出默认为utf-8解码字符:

??AAAAT -11.730239
??AAAAW -14.992939
??AAAAZ -14.992939
??AAA\304\204B -20.266239
??AAA\304\204D 3.007061
??AAA\304\204F 9.007061
??AAA\304\204G -13.767939
??AAA\304\204H -14.955439
??AAA\304\204K 3.007061
??AAA\304\204L 3.007061
??AAA\304\204M 3.007061
??AAA\304\204N 1.007061

我必须在编辑器中特别选择utf-8,以便它们能够正确显示(即编码)。在

如何强制numpy保存一个文件,使它是utf-8编码的?这是numpy的问题还是操作系统特有的问题?我使用的是Ubuntu14.04、Python2.7.6、Numpy1.8.1。在


Tags: 文件numpytxt脚本编码npval编辑器
1条回答
网友
1楼 · 发布于 2024-05-16 03:59:50

这只是一个快速而肮脏的解决方案,但它对我的(简单得多的)案例有效。不必直接保存到utf-8,您可以保存到一个临时文件中,然后进行第二次传递,将numpy默认的编码(在我的ubuntu14.04、python 3.4.0、numpy 1.9.2 case iso-8859-1中)转换为utf-8。在

np.savetxt('foo', data, **kwargs)
with open('foo', 'r', encoding='iso-8859-1') as fin, open('bar', 'w', encoding='utf-8') as fout:
    for line in fin:
        fout.write(line)

你可以通过运行

^{2}$

在命令行。在

相关问题 更多 >