2014-07-10 85 views
0

我有一个复合数字列表,创建为1d离散傅立叶变换的输出。我喜欢能够将它们显示在一个整齐的列中,实部和虚部分别舍入到小数点后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 

当然很好地排列在小数点。有没有简单的方法来做到这一点 - 一些格式化复杂数字的方法?

+1

他们是蟒蛇复数或'numpy'? – mgilson

+1

当你说“_rounded_”时,你真的是指四舍五入或者只是截断了吗?换句话说,你只是想显示它们达到4位小数分辨率,或者将它们放大或缩小? –

+0

我现在并不十分在意它们是圆形的还是截断的;它仅用于显示目的,我只想要一个不错的列表。 – Alasdair

回答

3

使用新的format函数。

>>> a = -3 + 5.3j 
>>> a 
(-3+5.3j) 
>>> "{num.real:+0.04f} {num.imag:+0.04f}j".format(num=a) 
'-3.0000 +5.3000j' 
+0

谢谢!我在看格式函数,但是我的阅读能力还不够,无法从c样式的printf格式代码进行翻译。这非常有帮助! – Alasdair

0

你可以做这样的事情:

print '%0.4f + %0.4fi' % (a.real, a.imag) 
+0

发布后,我发现这是一个不同的问题的答案。它运作良好,但如果像我上面的例子那样,虚部的符号和它的值之间会有一个空格,那将会很好。 – Alasdair

+0

@Alasdair您可以将选项卡作为分隔符。 – Maroun

+0

谢谢,但我想要的是'2.0000 + 3.0000i',而格式命令给我“2.0000 + 3.0000i”;也就是说,我想在“+”符号的右侧留出一个空格。 – Alasdair