Как вы поддерживаете мнимую часть сложного ndarray при транспонировании в Python? - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть np.ndarray t, который содержит комплексные числа, как правило, так: {[[ 1.52999954e+04+0.00000000e+00j -1.20004552e+02-1.11745858e-04j 2.02035276e+01-6.53487824e+03j ... -1.20004541e+02+3.34968369e-04j 2.02035276e+01+6.53487824e+03j -1.20004552e+02+1.11745858e-04j] [ 2.80499916e+03+0.00000000e+00j -2.20008345e+01-2.0]}

Он указывается как кортеж (257, 256) при использовании t.shape.

Когда я пытаюсь вызвать эту строку:

d[:, c] = np.transpose(t[bb])

Некоторые значения хранятся в моей матрице d, но они потеряли свои мнимые компоненты.Кто-нибудь знает, как это поддерживать?

1 Ответ

0 голосов
/ 28 февраля 2019

Вы, вероятно, неявно преобразуете свои сложные значения в обычные числа с плавающей точкой, записывая их в массив с плавающей точкой (ваш массив d).

>>> import numpy
>>> a = numpy.empty(shape=(2, 128), dtype=numpy.float32)
>>> b = 100*numpy.random.sample(128)+(100*numpy.random.sample(128)*1j)
>>> a.dtype
dtype('float32')
>>> b.dtype
dtype('complex128')
>>> a.shape
(2, 128)
>>> b.shape
(128,)
>>> a[0, :] = b
__main__:1: ComplexWarning: Casting complex values to real discards the imaginary part

Вы должны убедиться, что ваша матрица d создана со сложным типом d:1004 *

d = numpy.empty(shape=..., dtype=t.dtype)
...