Numpyで複素行列を定義する







Numpy の np.array を用いて行列を定義する際に,例えば 7X7 行列を np.zeros((7,7)) で作成すると,倍精度の実行列が作られてしまう.そこにcomplex型の変数を入れようとするとエラーが起こる.

import numpy as np

A = np.zeros((7,7))
print(A[0][0])#実行結果:0.0
print(type(A[0][0]))#実行結果:<class 'numpy.float64'>

######## これ以上を書くとエラーが出される ######
#A[0][0] = complex(1,2)
######## エラーメッセージ ##########
#TypeError: can't convert complex to float

複素数型の行列を定義する際には,次のようにして行えばよい.

import numpy as np

A = np.zeros((7,7), dtype=np.complex)
A[0][0] = complex(1,2)
print(A[0][0])#実行結果:(1+2j)
print(type(A[0][0]))#実行結果:<class 'numpy.complex128'>

最後で128となっているのは,4倍精度だからではなくって,複素数が実部と虚部という二つの倍精度実数を持つことに由来する.

numpy.array の使い方の”dtype”というオプションをヒントに行った.
numpy.array – Numpy 公式マニュアル

numpy.zeros – Numpy 公式マニュアル

決め手の参考サイトは,こちらの stackoverflow の質問の答えの最後の方.
Assigning complex values to numpy arrays? – stackoverflow

このブログについて

IAtLeX です.ブログをはじめてさほど時間がたっていないので,未熟な内容が多々あるかと思いますが,それも時間が解決してくれるはず...Python系の記事を着々と充実させていきたいです.投稿主についてはこちらを参照してください.

このブログについて - http://iatlex.com/about_blog/

コメントを残す

*