2014-07-10 112 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