python – Conjugate transpose operator .H in numpy
python – Conjugate transpose operator .H in numpy
You can subclass the ndarray
object like:
from numpy import ndarray
class myarray(ndarray):
@property
def H(self):
return self.conj().T
such that:
a = np.random.rand(3, 3).view(myarray)
a.H
will give you the desired behavior.
In general, the difficulty in this problem is that Numpy is a Cextension, which cannot be monkey patched…or can it? The forbiddenfruit module allows one to do this, although it feels a little like playing with knives.
So here is what Ive done:

Install the very simple forbiddenfruit package

Determine the user customization directory:
import site print site.getusersitepackages()

In that directory, edit
usercustomize.py
to include the following: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)))

Test it:
python c python c import numpy as np; A = np.array([[1,1j]]); print A; print A.H
Results in:
[[ 1.+0.j 0.+1.j]] [[ 1.0.j] [ 0.1.j]]
python – Conjugate transpose operator .H in numpy
Use arr.conj().T
Here is an example
ZeroKet = np.array([[1j], [2j]])
ZeroBra = Zero.conj().T