我有一个带>的向量30000字。我想创建一个这个向量的子集,它只包含那些长度大于5的单词。实现这个目的的最佳方法是什么?
基本上df包含多个句子。
所以,
wordlist = df2;
wordlist = [strip(wordlist[i]) for i in [1:length(wordlist)]];
现在,我需要将wordlist子集化,使其仅包含长度大于5的单词。
答案 0 :(得分:1)
sub(A,find(x->length(x)>5,A)) # => creates a view (most efficient way to make a subset)
编辑:getindex()
返回所需元素的副本
getindex(A,find(x->length(x)>5,A)) # => makes a copy
答案 1 :(得分:1)
您可以使用filter
wordlist = filter(x->islenatleast(x,6),wordlist)
并将其与快速条件相结合,例如islenatleast
定义为:
function islenatleast(s,l)
if sizeof(s)<l return false end
# assumes each char takes at least a byte
l==0 && return true
p=1
i=0
while i<l
if p>sizeof(s) return false end
p = nextind(s,p)
i += 1
end
return true
end
根据我的时间islenatleast
比计算整个长度(在某些情况下)更快。此外,通过定义与核心函数length
的原始竞争力,这显示了Julia的优势。
但是这样做:
wordlist = filter(x->length(x)>5,wordlist)
也会这样做。