我希望得到一些帮助。这是我的代码:
#! /usr/bin/python
import sys
import numpy as np
x = np.array(['aaa', 'bbb', 'ccc'])
y = np.array([10.0, 15.0, 25.0])
records_array = np.core.records.fromarrays([x, y])
np.savetxt(sys.stdout, records_array, fmt='%s %.1f')
给出(如预期):
aaa 10.0
bbb 15.0
ccc 25.0
要将最后一列打印为百分比,我将最后一行更改为:
np.savetxt(sys.stdout, records_array, fmt='%s %.1f %%')
但收到以下错误消息:
File "./savetxt_percent.py", line 9, in <module>
np.savetxt(sys.stdout, records_array, fmt='%s %.1f %%')
File "/usr/local/lib/python2.7/dist-packages/numpy/lib/npyio.py", line 1055, in savetxt
raise error
ValueError: fmt has wrong number of % formats: %s %.1f %%
谢谢!
最佳答案
奇怪的是 % 没有被正确解释。当您将字符串用于 fmt
时,它必须对其进行解析。我没有仔细查看代码,但是当尝试将字符串拆分为“%”字符以计算要打印的内容数时,它一定会感到困惑。要解决此问题,还可以将 np.savetxt
的 fmt
参数指定为预分割列表。换句话说,您可以使用
np.savetxt(sys.stdout, records_array, fmt=['%s', '%.1f %%'])
这适用于您想要在输出中出现的任何数量/位置的“%”。
关于python - numpy 格式字符串中的转义 % 符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24746237/