检查Julia数组中的所有值?

Unk*_*der 2 arrays julia

如何一次检查Julia数组中的所有值?假设我有一个数组a=[3,4,6,10,55,31,9,10]如何检查数组是否有大于10的值?或者我如何检查是否存在重复值(例如样本中包含两次的10个?我知道我可以编写循环来检查这一点,但我认为Julia可以更快地检查所有值.

Jef*_*son 8

功能anycount执行此操作:

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二进制搜索查找匹配值.

  • 等等,我想我得到了这个.我可以结合你给出的答案,然后使用unique()函数来获取我需要的第二部分.谢谢!!! (2认同)

小智 7

不确定这是否在之前的答案时已经实现,但现在最简洁的方法是:

all(a .> 10)
Run Code Online (Sandbox Code Playgroud)

正如 Chris Rackauckas 提到的,a .> 10返回一个布尔数组,然后all简单地检查所有值是否为true。相当于 Python 的anyall.