小编Ale*_*ley的帖子

允许函数忽略不受支持的关键字参数

是否有一种允许函数忽略不受支持的关键字参数的好方法?

fopts = [:kw1]
opts = Dict(:kw1=>:symb1, :kw2=>:symb2)

function f(; kw1 = :symb)
    return kw1
end
Run Code Online (Sandbox Code Playgroud)

f(;opts...) 会抛出一个 METHOD ERROR

我可以把它包装成这样的东西,但是我还需要知道哪些kwargs f会支持?

function f2(fopts; kwargs)
    f(; Dict(key=>get(opts, key, 0) for key in fopts)...)
end
Run Code Online (Sandbox Code Playgroud)

我错过了解决这个问题的方法.如果存在性能损失,那就不是那么好了,因为我想他们可能需要进行某种查询.是否有一种很好的方式来询问kwargs以f编程方式接受的内容?

keyword-argument julia

7
推荐指数
1
解决办法
212
查看次数

导入模块的多个版本/分支以在Julia中进行基准测试

如何在Julia的单个脚本中使用同一模块的多个不同版本或分支?

例如,如果我想对每个标记版本进行基准测试.

(有人最近问了一个类似的问题,我回答错了,但不过这可能有用.)

编辑:我自己已经回答了这个问题,但我相信他们可能会有更好的方式!

git benchmarking julia

5
推荐指数
1
解决办法
69
查看次数

julia lang - 如何将多个函数应用于值

我想将一组函数应用于值并获取一组值作为输出.我在help?> groupby(DataFrames包)中看到我们可以做到:

> df |> groupby(:a) |> [sum, length]

> df |> groupby([:a, :b]) |> [sum, length]
Run Code Online (Sandbox Code Playgroud)

但我们能做到吗

> [sum, length](groupby([:a, :b]))
 MethodError: objects of type Array{Function,1} are not callable
 square brackets [] for indexing an Array.
 eval_user_input(::Any, ::Base.REPL.REPLBackend) at ./REPL.jl:64
    in macro expansion at ./REPL.jl:95 [inlined]
    in (::Base.REPL.##3#4{Base.REPL.REPLBackend})() at ./event.jl:68
Run Code Online (Sandbox Code Playgroud)

甚至

> [sum, length](1:5)
Run Code Online (Sandbox Code Playgroud)

我期待输出:

[15, 5]
Run Code Online (Sandbox Code Playgroud)

group-by function set dataframe julia

4
推荐指数
1
解决办法
522
查看次数

从julia获取系统内存信息

有没有一个很好的方法来获取当前系统信息在朱莉娅(我的用例在这里是内存,但也基本上感兴趣的任何信息,我可以从topLinux上运行).

这就是我现在所拥有的:(基本上只是得到`free -m`的输出)< - 我无法让这个让我逃避反引号并保持代码突出显示...

import Base.DataFmt: readdlm_string, invalid_dlm

"""
    getmeminfo()
Returns (in MB) A tuple of containing:
    - Memory(total, used, buffer, available)
    - Swap(total, used, free)
"""
function getmeminfo()
    memstats = readdlm_string(readstring(`free -m`),invalid_dlm(Char), Int, '\n', true, Dict())
    return Tuple{Array{Int,1},Array{Int,1}}((memstats[2,[2;3;6;7]], memstats[3,[2;3;4]]))
end
Run Code Online (Sandbox Code Playgroud)

基地还有什么更好的想法吗?

system-information julia

4
推荐指数
1
解决办法
650
查看次数

在Julia找到小于n的两个下一个幂

我需要在Julia中找到小于给定数字的下两个幂.

smallerpoweroftwo(15)应该返回,8smallerpoweroftwo(17)应该返回16

到目前为止,我有这个,但搜索一串比特对我来说似乎有点笨拙.也许它不...任何想法?

function smallerpoweroftwo(n::Int)
    2^(length(bits(n)) - search(bits(n), '1'))
end
Run Code Online (Sandbox Code Playgroud)

谢谢!

编辑:我主要想的是使用按位算法有更优雅的方法来做到这一点.或者在某些其他语言中是否存在位长函数?

julia

3
推荐指数
1
解决办法
225
查看次数

在保留内容的同时将新变量保存到.jld(或hdf5)文件

.jld除了将其全部读取然后用额外的变量重写之外,还有一种更聪明的方法将变量添加到文件中吗?我认为使用hdf5可以实现,但我可以找到它是否已在JLD包中实现。

这就是我目前的做法。

using JLD
if isfile(filename)
    a = load(filename) #load all vars
    jldopen(filename, "w") do file
        for (k,v) in a #rewrite original vars
            write(file, k, v)
        end
        write(file, "additional_variable", add_var) #write new var
    end
end
Run Code Online (Sandbox Code Playgroud)

file-io hdf5 julia

3
推荐指数
1
解决办法
256
查看次数