在numpy中共轭转置运算符“ .H”
在numpy中,使用.T
属性获取的转置版本非常方便ndarray
。但是,没有类似的方法来获得共轭转置。Numpy的矩阵类具有.H
运算符,但没有ndarray。因为我喜欢可读的代码,并且因为我太懒惰而无法始终编写代码,所以我.conj().T
希望该.H
属性始终对我可用。如何添加此功能?是否可以添加它,以便每次导入numpy时都可以无脑地使用它?
(可以询问有关.I
逆运算符的类似问题。)
-
总的来说,这个问题的难点在于Numpy是C扩展名,不能用猴子打补丁……或者可以吗?该forbiddenfruit模块允许一个做到这一点,虽然感觉有点像用刀子玩。
所以这是我所做的:
-
安装非常简单的禁果包装
-
确定用户定制目录:
import site
print site.getusersitepackages()
-
在该目录中,编辑
usercustomize.py
以包括以下内容:from forbiddenfruit import curse
from numpy import ndarray
from numpy.linalg import inv
curse(ndarray,’H’,property(fget=lambda A: A.conj().T))
curse(ndarray,’I’,property(fget=lambda A: inv(A))) -
测试一下:
python -c python -c "import numpy as np; A = np.array([[1,1j]]); print A; print A.H"
结果是:
[[ 1.+0.j 0.+1.j]] [[ 1.-0.j] [ 0.-1.j]]
-