我想用科学记数法表示我的结果(例如,1.2e3)。我的数据是数组格式。是否有像tolist()
这样的函数可以将数组转换为浮点数,因此我可以使用%E来格式化输出?
这是我的代码:
import numpy as np
a=np.zeros(shape=(5,5), dtype=float)
b=a.tolist()
print a, type(a), b, type(b)
print '''%s''' % b
# what I want is
print '''%E''' % function_to_float(a or b)
答案 0 :(得分:12)
如果你的Numpy版本是1.7或更高版本,你应该可以使用formatter
选项numpy.set_printoptions
。 1.6应该肯定有用 - 1.5.1也可以。
import numpy as np
a = np.zeros(shape=(5, 5), dtype=float)
np.set_printoptions(formatter={'float': lambda x: format(x, '6.3E')})
print a
或者,如果您没有formatter
,则可以创建一个新数组,其值的格式为所需格式的字符串。这将创建一个与原始数组一样大的全新数组,因此它不是最有效的内存方式,但如果你不能升级numpy它可能会有效。 (我测试了它,它适用于numpy 1.3.0。)
使用此策略获得与上述类似的内容:
import numpy as np
a = np.zeros(shape=(5, 5), dtype=float)
formatting_function = np.vectorize(lambda f: format(f, '6.3E'))
print formatting_function(a)
'6.3E'
是您希望每个值打印为的格式。您可以参考this documentation了解更多选项。
在这种情况下,6
是打印数字的最小宽度,3
是小数点后显示的位数。
答案 1 :(得分:3)
您可以用科学计数法格式化数组的每个元素,然后根据需要显示它们。列表不能转换为浮点数,它们可能会浮在浮点数内。
import numpy as np
a = np.zeroes(shape=(5, 5), dtype=float)
for e in a.flat:
print "%E" % e
或
print ["%E" % e for e in a.flat]