Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/43.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
Julia中子阵索引的获取 vec = [[1, 2, 3], [4, 5, 6]]_Julia - Fatal编程技术网

Julia中子阵索引的获取 vec = [[1, 2, 3], [4, 5, 6]]

Julia中子阵索引的获取 vec = [[1, 2, 3], [4, 5, 6]],julia,Julia,我想获取元素[4,5,6]的索引,但是我不能使用getindex(),执行以下代码: getindex(vec, [1, 2, 3]) 给出: BoundsError: attempt to access 2-element Array{Array{Int64,1},1} at index [[1, 2, 3]] 因此,我想知道是否有任何有效的内置方法来实现这一点。当然,我可以将这个向量数组映射到另一个数字数组中,并在新的数字数组中进行搜索,但这并不是我所期望的解决方案 第二个问题是,我如何

我想获取元素
[4,5,6]
的索引,但是我不能使用
getindex()
,执行以下代码:

getindex(vec, [1, 2, 3])
给出:

BoundsError: attempt to access 2-element Array{Array{Int64,1},1} at index [[1, 2, 3]]
因此,我想知道是否有任何有效的内置方法来实现这一点。当然,我可以将这个向量数组映射到另一个数字数组中,并在新的数字数组中进行搜索,但这并不是我所期望的解决方案


第二个问题是,我如何更多地了解Julia中的搜索方法及其性能。我猜搜索的理论速度就像
\sqrt(N)
一样,但是根据特定的方法,实际的代码时间可能会有很大的不同。

从函数的名称判断,您可能会被误导:
getindex
检索存储在索引中的值

如果要查找数组中某个对象的索引,可以使用find*方法
findfirst
findall

julia> vec=[[1,2,3],[4,5,6]]
2-element Array{Array{Int64,1},1}:
 [1, 2, 3]
 [4, 5, 6]

julia> i = findfirst(x->x==[4,5,6],vec)
2

julia> vec[i]
3-element Array{Int64,1}:
 4
 5
 6
关于你的第二个问题:


最好让自己了解一般的搜索/排序算法(例如),因为性能更多地取决于所选择的算法,而不是特定于语言的实现。例如,时间复杂度可能非常不同(O(n),O(log(n),…)。

我认为您误解了
getindex
的功能。它是由
[]
调用的函数,因此

julia> getindex(vec, 2)
3-element Array{Int64,1}:
 4
 5
 6
Julia中的所有搜索(或“查找”)方法都将函数作为其第一个参数,并查找函数计算结果为
true
的位置。要查找特定元素,请使用
isequal
==
(它们是等效的):


我们相同的答案交叉张贴:-)
julia> findall(==([1,2,3]), vec)
1-element Array{Int64,1}:
 1