我有一个主数组和一个查询数组: -
batch_size=16
words = 20000
units = 50
tokens_per_sentence= 55
print (x.shape)
x_shape = x.shape
model = Sequential()
model.add(Embedding(words, units,input_length=tokens_per_sentence, batch_size=batch_size , input_shape=x_shape[1:]))
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
model.train_on_batch(x, y)
查询数组的所有元素都将是主数组的成员。这是一条规则。我必须找到主数组规定的查询数组的所有元素的顺序。
我可以天真地做到这一点: -
master_array=[2;5;3;7;1];
query_array=[1;3];
是否有更有效的解决方案?
答案 0 :(得分:2)
您可以使用intersect
:
order_array = intersect(master_array, query_array, 'stable');
或者您可以使用ismember
:
order_array = master_array(ismember(master_array, query_array));
答案 1 :(得分:1)
此解决方案在我的基准测试中花费的时间减少了近70%:
[~,idx] = ismember(master_array,query_array);
order_array = query_array(idx(idx > 0));
有关ismember
函数的更多信息,请参阅Matlab官方文档的this page。