我当前正在使用此方法将一组整数(变量words
)转换为numpy数组:
wordMask = np.asarray( [ int(x not in words) for x in xrange(0,nwords) ] ).reshape(nwords,1)
这里nwords
可以大到10000。在
我不是每次可以将wordMask
作为一个单独的变量来重新计算wordMask
,而是对wordMask
进行相应的更改,但是我想知道是否有一种合理有效的方法来重新计算wordMask
。在
编辑:我主要关心的是列表理解:
^{pr2}$会很慢,我正在寻找一种更快的方法来执行迭代
在创建numpy
数组的上下文中。在
让我们从下面的示例代码开始:
我更改了
asarray
代码,从一开始就自动改变它的形状。现在您已经有了单词掩码,所以无论何时添加或删除单词,都可以轻松地进行更新。在添加单词:
^{pr2}$删除单词:
就在这里!在
我会亲自用字典,因为它们更容易处理。我猜你选择使用NumPy来提高内存效率?NumPy总是在调整大小时复制数组,因此}方法不一定很快。一种方法是将遮罩设置为固定大小(上限),并在发生任何变化时进行更新。那样会更有效率。在
concatenate()
和{如果保证最大大小为10000,那么从上面的代码中删除大小更新,并将
nwords
设置为10000。在您可以尝试使用^{} 。下面是一个用法示例:
不幸的是,这仍然涉及到对
s
元素的Python级迭代(在list
调用中是隐式的)。我找不到比先将其转换为list
更快的方法来让NumPy在这里解释集合。在一些计时(使用Python 3.6、NumPy 1.13.1)显示,此解决方案速度更快,但并不令人难以置信:
^{pr2}$相关问题 更多 >
编程相关推荐