擅长:python、mysql、java
<p>让我们从下面的示例代码开始:</p>
<pre><code>import numpy as np
words = set([1, 3, 5, 7, 9])
nwords = len(words)
wordMask = np.asarray([ [int(x not in words)] for x in xrange(0, nwords) ])
</code></pre>
<p>我更改了<code>asarray</code>代码,从一开始就自动改变它的形状。现在您已经有了单词掩码,所以无论何时添加或删除单词,都可以轻松地进行更新。在</p>
<p>添加单词:</p>
^{pr2}$
<p>删除单词:</p>
<pre><code>oldWord = 3
if oldWord < nwords: # Update the mask
wordMask[oldWord][0] = 1
words.discard(oldWord)
nwords = len(words)
wordMask = np.resize(wordMask, (nwords, 1)) # Resize the mask
</code></pre>
<p>就在这里!在</p>
<p>我会亲自用字典,因为它们更容易处理。我猜你选择使用NumPy来提高内存效率?NumPy总是在调整大小时复制数组,因此<code>concatenate()</code>和{<cd3>}方法不一定很快。一种方法是将遮罩设置为固定大小(上限),并在发生任何变化时进行更新。那样会更有效率。在</p>
<p>如果保证最大大小为10000,那么从上面的代码中删除大小更新,并将<code>nwords</code>设置为10000。在</p>