复杂阵列的智能打印

时间:2012-04-04 05:50:16

标签: python arrays numpy pretty-print

当复杂的浮点矩阵真正用实数或虚数填充时,这是很常见的情况。有时它们甚至是整数(但中间数字不是。而且无论如何都没有复杂的整数类型)。可能有一个聪明的解决方案,没有“手工”格式化所有东西?

示例:使用(尽可能接近所需的)组合

numpy.around(numpy.real_if_close(numpy.array([[1.0j,1.0],[0.0,1.0j]],complex)))

我得到了

array([[ 0.+1.j, -1.+0.j],
       [ 0.+0.j,  0.+1.j]])

所需的输出

array([[ 1j, -1 ],
       [ 0 ,  1j]])

1 个答案:

答案 0 :(得分:3)

>>> import numpy
>>> a = numpy.around(numpy.real_if_close(numpy.array([[1.0j,0.0],[0.0,1.0j]],complex)))
>>> a
array([[ 0.+1.j,  0.+0.j],
       [ 0.+0.j,  0.+1.j]])
>>> [[c if c.imag else c.real for c in b] for b in a]
[[1j, 0.0], [0.0, 1j]]

我不确定是否采用内置方法。

编辑:对numpy数组进行子类化的建议很好,这可能是最简单的方法。否则你可以直接从数组中获取所有内容并将其放入列表中,但是不会像你想要的那样打印0(它打印0j)

>>> [[c for c in b] for b in a]
[[1j, 0j], [0j, 1j]]