上一章: 酉矩阵
下一章: 量子信息
复杂矩阵的抽象。
构造 Matrix 对象
API文档链接
默认构造函数
Python
mat = Matrix()
print("mat",mat)
执行结果如下所示:
numpy.ndarray 作为构造方法入参
根据传入的 numpy.ndarray
对象构造,该对象存储了一个二维矩阵。
Python
import numpy as np
def test():
rows = 3
cols = 4
data = np.random.rand(rows, cols)
data = np.array(data, dtype=complex)
m = Matrix(data)
print("m",m)
if __name__ == "__main__":
test()
执行结果如下所示:
m [[0.6650874 +0.j 0.68517404+0.j 0.98889109+0.j 0.04471197+0.j]
[0.64401864+0.j 0.39456866+0.j 0.96256409+0.j 0.53353689+0.j]
[0.72914706+0.j 0.01258831+0.j 0.46879808+0.j 0.41446852+0.j]]
获取内部数据
获取 numpy.ndarray 形式的数据
获取内部数据,结果将作为 numpy.ndarray
对象返回。
API文档链接
Python
import numpy as np
def test():
rows = 3
cols = 4
data = np.random.rand(rows, cols)
data = np.array(data, dtype=complex)
m = Matrix(data)
data_ = m.ndarray()
print("data_",data)
if __name__ == "__main__":
test()
执行结果如下所示:
data_ [[0.03511921+0.j 0.75430961+0.j 0.19238195+0.j 0.19057673+0.j]
[0.61574108+0.j 0.89369063+0.j 0.81701418+0.j 0.73896602+0.j]
[0.21010302+0.j 0.35964433+0.j 0.41305091+0.j 0.44447268+0.j]]
获取行总数和列总数
获取矩阵的行总数和列总数。
获取总行数API文档链接
获取总列数API文档链接
Python
import numpy as np
def test():
rows = 3
cols = 4
data = np.random.rand(rows, cols)
data = np.array(data, dtype=complex)
m = Matrix(data)
print("row total:",m.row_total())
print("col total:",m.col_total())
if __name__ == "__main__":
test()
执行结果如下所示:
row total: 3
col total: 4
获取元素
通过行索引和列索引获取矩阵元素的值。
API文档链接
Python
import numpy as np
def test():
rows = 3
cols = 4
data = np.random.rand(rows, cols)
data = np.array(data, dtype=complex)
m = Matrix(data)
print("m:")
for i in range(m.row_total()):
for j in range(m.col_total()):
print(m.at(i,j),end=',')
print()
if __name__ == "__main__":
test()
执行结果如下所示:
m:
(0.5387399873890723+0j),(0.5946435956404229+0j),(0.8662388940809534+0j),(0.7465917268170127+0j),
(0.6650096219471038+0j),(0.10914316657637124+0j),(0.5999827262878416+0j),(0.5121762859881978+0j),
(0.43882836608920894+0j),(0.1639091992188828+0j),(0.4683573326093392+0j),(0.9735070812593357+0j),
应用
厄米性
判断当前矩阵是否为 Hermitian 矩阵,使用 is_hermitian 接口。
获取转置矩阵
获取当前矩阵的转置矩阵,使用 transpose 或 T 接口。
获取伴随矩阵
获取当前矩阵的伴随矩阵,使用 hermitian_conjugate 或 adjoint 接口。
获取 L2 范数
获取当前矩阵的 L2 范数,使用 L2 接口。
Python
import numpy as np
def test():
rows = 3
cols = 4
data = np.random.rand(rows, cols)
data = np.array(data, dtype=complex)
m = Matrix(data)
print("is_hermitian",m.is_hermitian())
print("transpose",m.transpose())
print("T",m.T())
print("hermitian_conjugate",m.hermitian_conjugate())
print("adjoint",m.adjoint())
print("L2",m.L2())
if __name__ == "__main__":
test()
执行结果如下所示:
is_hermitian False
transpose [[0.9341786 +0.j 0.2134688 +0.j 0.40507989+0.j]
[0.49122518+0.j 0.45268175+0.j 0.10207822+0.j]
[0.062246 +0.j 0.65736666+0.j 0.15927297+0.j]
[0. +0.j 0. +0.j 0. +0.j]]
T [[0.9341786 +0.j 0.2134688 +0.j 0.40507989+0.j]
[0.49122518+0.j 0.45268175+0.j 0.10207822+0.j]
[0.062246 +0.j 0.65736666+0.j 0.15927297+0.j]
[0. +0.j 0. +0.j 0. +0.j]]
hermitian_conjugate [[0.9341786 +0.j 0.2134688 +0.j 0.40507989+0.j]
[0.49122518+0.j 0.45268175+0.j 0.10207822+0.j]
[0.062246 +0.j 0.65736666+0.j 0.15927297+0.j]
[0.46341251+0.j 0.80009271+0.j 0.31558019+0.j]]
adjoint [[0.9341786 +0.j 0.2134688 +0.j 0.40507989+0.j]
[0.49122518+0.j 0.45268175+0.j 0.10207822+0.j]
[0.062246 +0.j 0.65736666+0.j 0.15927297+0.j]
[0.46341251+0.j 0.80009271+0.j 0.31558019+0.j]]
L2 (1.5595857384665406+0j)
布尔函数
判等
判断两个 Matrix 对象的内部数据是否相等。
API文档链接
Python
import numpy as np
def test():
rows = 3
cols = 4
data = np.random.rand(rows, cols)
data = np.array(data, dtype=complex)
m = Matrix(data)
m2 = m
print(m==m2)
if __name__ == "__main__":
test()
执行结果如下所示: