Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Indexing Julia中匹配值的智能索引_Indexing_Julia - Fatal编程技术网

Indexing Julia中匹配值的智能索引

Indexing Julia中匹配值的智能索引,indexing,julia,Indexing,Julia,假设我有以下几点: # valuesToFind: n x 1 vector # allValues: m x n matrix, in which every column allValues[:,i] # contains among it's components exactly 1 instance of the # corresponding value valuesToFind[i] at some row position 我试图为valuesToFind中的每个值确定此匹配发生

假设我有以下几点:

# valuesToFind: n x 1 vector
# allValues: m x n matrix, in which every column allValues[:,i]
# contains among it's components exactly 1 instance of the
# corresponding value valuesToFind[i] at some row position
我试图为
valuesToFind
中的每个值确定此匹配发生的位置(行索引),目前,我通过以下循环实现此匹配:

idx=Array(Int16, length(valuesToFind))
for (i, v) in enumerate(valuesToFind)
    idx[i] = findfirst(articleIDs[:,i], v)
end
是否可以在一条语句中不使用循环执行此操作?

您正在寻找:

[findfirst(allValues[:,i], v) for (i,v) in enumerate(valuesToFind)]

我不是100%相信这比简单的循环更清晰(在代码可读性方面),但如果你想这样做的话,它可以在一行中完成工作。

试试:

map(x->ind2sub(allValues,x)[1],findin(allValues,valuesToFind))
这是一个单行解决方案,用于获取列中每个值的行号。请注意,它使用问题中列出的假设(每列中的唯一值)。它还对矩阵的列优先布局使用了一些假设。布局假设可以通过对
ind2sub
返回的第一个索引进行
排序来删除