![](/img/trans.png)
[英]How can I make this PyTorch heatmap function faster and more efficient?
[英]How can I make my index function faster?
因此,给定一个结构数组,即带有字段,Word,Documents,Locations的Index,它需要一个char数组的单元格数组并将其索引到Index中,并且还记录出现在其中的文档的DocNums。
function Index = InsertDoc(Index, newDoc, DocNum)
for i = 1:numel(newDoc)
contains = any(strcmpi(newDoc(i),[Index.Word]));
if any(contains);
curr = find(strcmpi(newDoc(i),[Index.Word]),true);
Index(curr).Documents{1} = unique([Index(curr).Documents{1},DocNum]);
if (numel(Index(curr).Documents{1}) ~= numel(Index(curr).Locations))
Index(curr).Locations{end+1} = [i];
else
Index(curr).Locations{end} = [Index(curr).Locations{end},i];
end
else
curr = numel(Index) + 1;
Index(curr).Word = [newDoc(i)];
Index(curr).Documents = {DocNum};
Index(curr).Locations = {[i]};
end
end
end
例如
Doc1 = {'Matlab', 'is', 'awesome'};
Doc2 = {'Programming', 'is', 'very', 'very', 'fun'};
Doc3 = {'I', 'love', 'Matlab','very','much};
someIndex = InitializeIndex;
% InitializeIndex just creates struct array with the given fields and empty cell arrays
someIndex = InsertDoc(someIndex, Doc1, 1);
someIndex = InsertDoc(someIndex, Doc2, 2);
someIndex = InsertDoc(someIndex, Doc3, 3);
结果将是someIndex(1)
Word: 'Matlab'
Documents: [1 3]
Locations: {[1] [3]}
someIndex(2)
Word: 'is'
Documents: [1 2]
Locations: {[2] [2]}
someIndex(5)
Word: 'very'
Documents: [2 3]
Locations: {[3 4] [4]}
我需要能够使用具有多个单词的20000个元素的结构数组来运行此命令,现在完成索引需要花费大量时间。 如何改善此算法?
在循环开始之前,尝试为单元数组“ Index ” 分配内存 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.