擅长:python、mysql、java
<p>一般来说,这个问题的困难在于Numpy是一个C扩展,它不能被猴子修补……或者它可以吗?<a href="https://pypi.python.org/pypi/forbiddenfruit">forbiddenfruit</a>模块允许用户执行此操作,尽管感觉有点像玩刀具。</p>
<p>以下是我所做的:</p>
<ol>
<li><p>安装非常简单的<a href="https://pypi.python.org/pypi/forbiddenfruit">forbiddenfruit</a>包</p></li>
<li><p>确定用户自定义目录:</p>
<pre><code>import site
print site.getusersitepackages()
</code></pre></li>
<li><p>在该目录中,编辑<code>usercustomize.py</code>以包括以下内容:</p>
<pre><code>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)))
</code></pre></li>
<li><p>测试它:</p>
<pre><code>python -c python -c "import numpy as np; A = np.array([[1,1j]]); print A; print A.H"
</code></pre>
<p>结果:</p>
<pre><code>[[ 1.+0.j 0.+1.j]]
[[ 1.-0.j]
[ 0.-1.j]]
</code></pre></li>
</ol>