当复杂的浮点矩阵真正用实数或虚数填充时,这是很常见的情况。有时它们甚至是整数(但中间数字不是。而且无论如何都没有复杂的整数类型)。可能有一个聪明的解决方案,没有“手工”格式化所有东西?
示例:使用(尽可能接近所需的)组合
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]])
答案 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]]