如何一次检查Julia数组中的所有值?假设我有一个数组a=[3,4,6,10,55,31,9,10]
如何检查数组是否有大于10的值?或者我如何检查是否存在重复值(例如样本中包含两次的10个?我知道我可以编写循环来检查这一点,但我认为Julia可以更快地检查所有值.
功能any
并count
执行此操作:
julia> a = [3,4,6,10,55,31,9,10]
8-element Array{Int64,1}:
3
4
6
10
55
31
9
10
julia> any(x->x==3, a)
true
julia> count(x->x==10, a)
2
Run Code Online (Sandbox Code Playgroud)
然而,性能可能与循环大致相同,因为julia中的循环很快(并且这些函数本身在标准库中的julia中实现).
如果问题有更多的结构,你可以获得大的加速.例如,如果向量已排序,您可以使用searchsorted
二进制搜索查找匹配值.
小智 7
不确定这是否在之前的答案时已经实现,但现在最简洁的方法是:
all(a .> 10)
Run Code Online (Sandbox Code Playgroud)
正如 Chris Rackauckas 提到的,a .> 10
返回一个布尔数组,然后all
简单地检查所有值是否为true
。相当于 Python 的any
和all
.