在numpy中共轭转置运算符“ .H”

发布于 2021-01-29 17:23:40

在numpy中,使用.T属性获取的转置版本非常方便ndarray。但是,没有类似的方法来获得共轭转置。Numpy的矩阵类具有.H运算符,但没有ndarray。因为我喜欢可读的代码,并且因为我太懒惰而无法始终编写代码,所以我.conj().T希望该.H属性始终对我可用。如何添加此功能?是否可以添加它,以便每次导入numpy时都可以无脑地使用它?

(可以询问有关.I逆运算符的类似问题。)

关注者
0
被浏览
562
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    总的来说,这个问题的难点在于Numpy是C扩展名,不能用猴子打补丁……或者可以吗?该forbiddenfruit模块允许一个做到这一点,虽然感觉有点像用刀子玩。

    所以这是我所做的:

    1. 安装非常简单的禁果包装

    2. 确定用户定制目录:

      import site
      

      print site.getusersitepackages()

    3. 在该目录中,编辑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)))


    4. 测试一下:

      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]]
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看