Преобразовать комплекс в целочисленную матрицу в Python - PullRequest
0 голосов
/ 11 октября 2019

Есть ли способ преобразовать сложную матрицу в целочисленную матрицу в Python? Раствор в Wolfram Mathematica . Например,

import numpy as np
A=np.zeros((6,6),dtype=complex)
A[1,1]= 1.+1j
A[3,2]= 2.1-1j
print(A)

возвращает

[[0. +0.j 0. +0.j 0. +0.j 0. +0.j 0. +0.j 0. +0.j]
 [0. +0.j 1. +1.j 0. +0.j 0. +0.j 0. +0.j 0. +0.j]
 [0. +0.j 0. +0.j 0. +0.j 0. +0.j 0. +0.j 0. +0.j]
 [0. +0.j 0. +0.j 2.1-1.j 0. +0.j 0. +0.j 0. +0.j]
 [0. +0.j 0. +0.j 0. +0.j 0. +0.j 0. +0.j 0. +0.j]
 [0. +0.j 0. +0.j 0. +0.j 0. +0.j 0. +0.j 0. +0.j]]

Но я бы хотел что-то вроде

[[0 0   ...
 [0 1+j ...  

Я пытался

A.astype(np.int64)

но возвращает

... ComplexWarning: Casting complex values to real discards the imaginary part
  Entry point for launching an IPython kernel.
array([[0, 0, 0, 0, 0, 0],
       [0, 1, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0],
       [0, 0, 2, 0, 0, 0],
       [0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0]])

1 Ответ

0 голосов
/ 11 октября 2019

А как насчет следующего:

import numpy as np

x = np.array([[12.0, 12.51 + 1.44J], [2.34 + 1.2J, 7.98 - 3.4J] ])

y = np.int_(x.real) + (np.int_(x.imag))*1J

Тогда вы в принципе можете заменить np.int_ другими функциями (floor, round и т. Д. И т. Д.).

...