复数的漂亮打印
Posted
技术标签:
【中文标题】复数的漂亮打印【英文标题】:pretty printing of complex numbers 【发布时间】:2014-07-10 06:37:19 【问题描述】:我有一个复数列表,作为一维离散傅里叶变换的输出创建。我希望能够将它们显示在一个整洁的列中,实部和虚部各四舍五入到小数点后 4 位;类似:
21.0000 + 0.0000j
-3.0000 + 5.1962j
-3.0000 + 1.7321j
-3.0000 + 0.0000j
-3.0000 - 1.7321j
-3.0000 - 5.1962j
当然,沿着小数点很好地排列。有没有一种简单的方法来做到这一点 - 某种格式化复数的方法?
【问题讨论】:
他们是python复数还是numpy
?
当您说 rounded 时,您的真正意思是四舍五入还是截断?换句话说,您只想将它们显示为最多 4 位小数的分辨率,还是向上或向下舍入?
我现在不太关心它们是否被舍入或截断;它仅用于显示目的,我只想要一个漂亮的列表。
【参考方案1】:
使用新的format 函数。
>>> a = -3 + 5.3j
>>> a
(-3+5.3j)
>>> "num.real:+0.04f num.imag:+0.04fj".format(num=a)
'-3.0000 +5.3000j'
【讨论】:
谢谢!我正在查看格式函数,但我的阅读内容还不够远,无法从 c 样式的 printf 格式代码中进行翻译。这很有帮助!【参考方案2】:你可以这样做:
print '%0.4f + %0.4fi' % (a.real, a.imag)
【讨论】:
发布后我发现这是对另一个问题的回答。它工作得很好,但如果像我上面的例子一样,在虚部的符号和它的值之间有一个空格会很好。 @Alasdair 您可以使用制表符作为分隔符。 谢谢,但我想要的是“2.0000 + 3.0000i”,而格式命令给我“2.0000 +3.0000i”;也就是说,我想要一个空格“+”符号。【参考方案3】:也许你正在寻找这样的东西:
>>> a = -3 - 5.3j
>>> "num.real:+0.04f num.imag:=+8.04fj".format(num=a)
'-3.0000 - 5.3000j'
【讨论】:
以上是关于复数的漂亮打印的主要内容,如果未能解决你的问题,请参考以下文章