Julia - 基于值数组过滤的最快方法?

标签 julia

df 是一个 120 万行的 DataFrame
valid 是一个包含 16000 个要过滤的有效值的数组
我尝试对过滤器使用列表理解,但由于搜索两个数组,速度非常慢。df[[i in valid for i in df[:match],:] 什么是更快的方法来做到这一点?用在哪里? “过滤”功能?

最佳答案

搜索集合将非常快:

const validset = Set(valid)
filter((x)-> x.match in validset,df)
一些表现:
julia> df=DataFrame(match=rand(1:(10^8),10^6));

julia> valid = collect(1:1_000_000); validset=Set(valid)

julia> @btime filter((x)-> x.match in $validset,$df)
  173.341 ms (3999506 allocations: 61.30 MiB)
或者 Bogumil 推荐的更快的版本:
julia> @btime filter(:match => in($validset),$df)
  37.500 ms (23 allocations: 282.44 KiB)

关于Julia - 基于值数组过滤的最快方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64599003/

相关文章:

function - Julia 模块调用用户定义函数

profiling - 是否有相当于 Python 的 cProfile 的 Julia 分析器?

julia - 如何在 Julia 中使用 Intel MKL 而不是 libopenblas

julia - 在 Julia 中提取特定的子数组

csv - Julia TimeSeries 包中的 Readtimearray 函数

julia - Julia 如何解释 10 :1?

julia - 如何访问 Julia 1.0.0 中的 conv 函数

julia - 在 Pluto.jl 中输入 Unicode 字符

Julia 在整数数组中搜索标记的方法

julia - Julia 中的字段和属性有什么区别?