1. ホーム
  2. python

Numpyです。2つの実数配列から複素数配列を作成する?

2023-09-25 20:53:20

質問

同じ配列の2つの部分を組み合わせて、複雑な配列を作りたいのですが。

Data[:,:,:,0] , Data[:,:,:,1]

これらは動作しません。

x = np.complex(Data[:,:,:,0], Data[:,:,:,1])
x = complex(Data[:,:,:,0], Data[:,:,:,1])

私は何かを見逃しているのでしょうか?numpyは複素数に対して配列関数を実行するのが好きではないのでしょうか?以下はそのエラーです。

TypeError: only length-1 arrays can be converted to Python scalars

どのように解決するのですか?

これは、あなたが望むことをやっているようです。

numpy.apply_along_axis(lambda args: [complex(*args)], 3, Data)

もう一つの解決策を紹介します。

# The ellipsis is equivalent here to ":,:,:"...
numpy.vectorize(complex)(Data[...,0], Data[...,1])

そしてさらにもう一つのシンプルな解決策。

Data[...,0] + 1j * Data[...,1]

PS : メモリを節約したい場合(中間配列がない)。

result = 1j*Data[...,1]; result += Data[...,0]

下記のdevSの解決策も高速です。