1

複雑な浮動小数点行列が実際に実数または虚数で満たされるのは、非常に一般的な状況です。整数の場合もあります(ただし、中間の数値はそうではありません。とにかく、複雑な整数型はありません)。おそらく、すべてを「手で」フォーマットすることなく、スマートな解決策がありますか?

例: with (できるだけ必要なものに近い) 組み合わせ

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 に答える