回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我试图测试在<a href="https://stackoverflow.com/questions/30293881/matrix-search-operation-using-numpy-and-pandas">Matrix search operation using numpy and pandas</a>上给出的相同示例</p>
<p>在<code>3.5.0-17-generic #28-Ubuntu SMP Tue Oct 9 19:32:08 UTC 2012 i686 i686 i686 GNU/Linux</code>上,使用<code>python 2.7.3, numpy 1.9.2 and pandas 0.15.2</code></p>
<p>举个小例子:</p>
<pre><code>ds1 = [[ 4, 13, 6, 9],
[ 7, 12, 5, 7],
[ 7, 0, 4, 22],
[ 9, 8, 12, 0]]
ds2 = [[ 4, 1],
[ 5, 3],
[ 6, 1],
[ 7, 2],
[ 8, 2],
[ 9, 3],
[12, 1],
[13, 2],
[22, 3]]
ds1= pd.DataFrame(ds1)
ds2= pd.DataFrame(ds2)
C = np.where(ds1.values.ravel()[:, None] == ds2.values[:, 0])
print C
</code></pre>
<p>给出错误的结果</p>
^{pr2}$
<p><strong>预期输出</strong></p>
<pre><code>output = [[1, 2, 1, 3],
[2, 1, 3, 2],
[2, 0, 1, 3],
[3, 2, 1, 0]]
</code></pre>
<p>在处理大矩阵值的时候</p>
<pre><code>ds1 = pd.read_table('https://gist.githubusercontent.com/karimkhanp/9527bad750fbe75e072c/raw/ds1', sep=' ', header=None)
ds2 = pd.read_table('https://gist.githubusercontent.com/karimkhanp/1692f1f76718c35e939f/raw/6f6b348ab0879b702e1c3c5e362e9d2062e9e9bc/ds2', header=None, sep=' ')
C = np.where(ds1.values.ravel()[:, None] == ds2.values[:, 0])
print C
</code></pre>
<p>它给予</p>
<pre><code>(1000, 1001) (4000, 2)
(array([], dtype=int32),)
</code></pre>
<p>而不是替换的矩阵值。在</p>
<p>任何建议都会很有帮助。在</p>