在Jupyter中打印复数矩阵更加美观

时间:2019-03-01 18:28:58

标签: python pandas jupyter-notebook jupyter

我想找到一种在jupyter中更漂亮地显示复杂的numpy矩阵的方法。 pandas Dataframe对于有理浮点数非常有效。但是,当使用复数时,精度太高,因此表将扩展太多。我尝试使用set_option()设置显示精度,但是它不起作用。这是一个示例:

import numpy as np
import pandas as pd

pd.set_option("display.precision", 3)

A = np.random.rand(3,3)
df_A = pd.DataFrame(A)

B = np.random.rand(3,3)+1j*np.random.rand(3,3)
df_B = pd.DataFrame(B)

print(df_A)
print(df_B)

输出:

    0      1      2
0  0.665  0.824  0.953
1  0.341  0.078  0.408
2  0.945  0.411  0.078
                                            0  \
0    (0.2553045397887609+0.8464631779709604j)   
1  (0.5724405361700162+0.047300152111596105j)   
2     (0.5824766758024993+0.974755917539835j)   

                                           1  \
0  (0.3533797280121552+0.20515824034905894j)   
1    (0.928312255311234+0.3909443194373995j)   
2   (0.2700966337410404+0.9137483492310767j)   

                                           2  
0  (0.21748538025578568+0.7730350615682122j)  
1  (0.2435709287109903+0.46366472945887327j)  
2   (0.6531622218102532+0.5102462678094016j)

因此您会看到有理浮点矩阵以正确的精度打印,但是复杂矩阵不受其影响。

是错误还是功能? 有没有办法降低复数显示的精度?

1 个答案:

答案 0 :(得分:0)

applymap中使用基本的字符串格式。

df_B = df_B.applymap('{:.3f}'.format)
df_B
               0               1               2
0   0.976+0.935j    0.739+0.851j    0.436+0.734j
1   0.998+0.867j    0.774+0.849j    0.553+0.749j
2   0.405+0.049j    0.965+0.912j    0.292+0.958j