【问题标题】:Convert complex to integer matrix in python在python中将复数转换为整数矩阵
【发布时间】:2019-10-11 10:00:00
【问题描述】:

有没有办法在python中将复数矩阵转换为整数矩阵? Solution in 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]])

【问题讨论】:

  • 嗨,欢迎来到 SO。对于一个好问题,您应该发布您尝试过的代码。您至少可以提供您创建的矩阵以及您已经尝试过的库。

标签: python type-conversion complex-numbers


【解决方案1】:

下面的呢:

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_ 替换为其他功能(floorround 等)。

【讨论】:

  • 您在发布之前尝试过您的代码吗?乘以 1j 将结果转换为一个 Complex,在 Python 中,松散地说,是两个 Float 的并集。当您将整数和复数相加时,整数被转换为具有空虚部的复数,结果仍然是复数,即两个浮点数。如果您在发布之前尝试过您的代码,我本可以为我、您和其他观众省去所有这些长篇大论。
  • 谢谢 GuaCaLa,它适用于实数,但不适用于复数。
猜你喜欢
  • 1970-01-01
  • 2021-12-29
  • 2015-07-26
  • 2021-11-25
  • 1970-01-01
  • 1970-01-01
  • 2014-05-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多