1

当复数浮点矩阵实际上充满实数或虚数时,这是很常见的情况。有时它们是偶数(但中间数不是。反正没有复杂的整数类型)。可能有一个聪明的解决方案,无需“手动”格式化所有内容?

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

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]])
4

1 回答 1

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]]
于 2012-04-04T05:54:12.927 回答