擅长:python、mysql、java
<p>我很容易看到一个小小的改进,而不是下一个:</p>
<pre><code>for tup in tups:
x[tup[1],tup[0]] = x[tup[1],tup[0]] + 1
</code></pre>
<p>试着去做</p>
^{pr2}$
<p>因为这会覆盖相同的内存地址,而不是创建一个新的内存点来放入“旧值+1”(注意:在这种情况下,这可能只会导致边际加速,但是如果你用同样的方法a+=B而不是C=a+B,在a和B分别是大约1gb的numpy ndarray的情况下,这实际上是一个巨大的加速)</p>
<p>你为什么读元组?你不应该首先把它作为一个numpy数组读入,而不是作为元组列表读入,然后改为numpy数组吗?你在哪里创建元组的大列表?如果可以避免这种情况,那么最好是避免元组列表,而不是创建元组列表,然后再交换到numpy解决方案?在</p>
<p>编辑:所以我只想告诉你这个加速,你可以通过+=,同时问为什么你有一个大的元组列表,但这太长了,不能把这两个东西都放在评论中</p>
<p>另一个问题:我假设元组可以有多个重复吗?像</p>
<pre><code>tups = [(1,0), (2,4), (1,0), (1,2), ..., (999, 999), (992, 999)]
</code></pre>
<p>所以在你的最终结果中,除了0和1之外还会存在其他值?或者你得到的数组中只有一和零?在</p>