Как выработать «Сложное предупреждение: приведение сложных значений к реальным отбрасывает мнимую часть»? - PullRequest
0 голосов
/ 12 июня 2019

Я хотел бы использовать матрицу со сложными элементами для построения новой матрицы, но это выдает мне предупреждение

«Сложное предупреждение: приведение сложных значений к реальному отбрасывает мнимую часть».

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

Это изображение, содержащее мой оригинальный код

This is the image containing my original code

Ответы [ 2 ]

0 голосов
/ 14 июня 2019

Я знаю, где сделать это предупреждение.

Мне нужно добавить dtype = "complex_", когда я создаю новую пустую матрицу.

Например,

mat__ = np.zeros((k*nboxes,k*nboxes),dtype = 'complex_')

Если мы просто напишем

mat__ = np.zeros((k*nboxes,k*nboxes))

и сделаем некоторые манипуляции с этим, например, используя сложную матрицу для формирования новой матрицы, то новая матрица отбросит мнимую часть.

0 голосов
/ 12 июня 2019

Вы можете попробовать использовать numpy для создания новой матрицы из вашего Matrix_1 с помощью конструктора массива.Таким образом, вы можете указать, что вы используете комплексные числа с dtype.Примерно так должно получиться:

mat_ = np.array(matrix_1[:,ll,ll,:],dtype = "complex_")

Некоторые тесты, которые я использовал, чтобы убедиться:

import numpy as np

abc = np.array([[1+1j,2+2j,3+3j],[4+4j,5+5j,6+6j],[7+7j,8+8j,9+9j]],dtype = "complex_") # initial
print(abc)
abc2 = np.array(abc[1:,:1],dtype = "complex_") # post transformation
print(abc2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...