gpt4 book ai didi

python - Julia (v1.3.1) 中是否存在 `logspace` 的任何替代方案?

转载 作者:行者123 更新时间:2023-12-01 03:02:57 24 4
gpt4 key购买 nike

背景和现有解决方案

我正在将一些 Python 代码移植到 Julia (v1.3.1) 中,并且在尝试将代码重现为 Julia 中易于阅读的代码时遇到了问题。

在 Python 中(使用 numpy),我们创建了一个从 0.001 到 1000 的 101 个元素的对数间隔序列:

>>> X = numpy.logspace( -3, 3, 101 )
array([1.00000000e-03, 1.14815362e-03, 1.31825674e-03, ..., 1.00000000e+03])

使用 PyCall 在 Julia 中实现这一点当然会像这样工作:
julia> using PyCall
julia> numpy = pyimport("numpy")
julia> X_python = numpy.logspace( -3, 3, 101 )
101-element Array{Float64,1}:
0.001
0.0011481536214968829
0.0013182567385564075

1000.0

但是我想在我当前的项目中用纯 Julia 实现这个。在 Julia 文档中没有找到相同的功能,经过一番搜索后,我发现了 logspace 的旧文档条目。 here .然后我遇到了 this Github pull request用于弃用 logspace进入它的定义,所以目前似乎这是创建对数间隔序列的方法:
julia> X_julia  = 10 .^ range( -3, 3, length = 101 )
101-element Array{Float64,1}:
0.001
0.0011481536214968829
0.0013182567385564075

1000.0

TL;DR/实际问题
julia> LinRange(1e-3, 1e3, 101)
101-element LinRange{Float64}:
0.001,10.001,20.001,…,1000.0

由于目前有一个简单易读的函数, LinRange ,用于创建线性序列(如上所示),是否存在类似的函数,例如 LogRange ,对于对数序列?

我打算在这个项目中简化和提高可读性,所以在广播 range 的同时从数学的角度来看,将 10 个作品的指数转化为指数,例如 LogRange(1e-3, 1e3, 101)初学者或兼职程序员更容易理解。

编辑:当序列的限制是 10 的整数指数时,代码相当清晰,但是当限制是浮点数时, LogRange() 之间的可读性差异和 10 .^ ()变得更加明显:
julia> 10 .^ range( log10(1.56e-2), log10(3.62e4), length = 101 )
julia> LogRange( 1.56e-2, 3.62e4, 101 )

最佳答案

你不能定义你自己的函数logrange , 像这样:

logrange(x1, x2, n) = (10^y for y in range(log10(x1), log10(x2), length=n))

?

这将返回一个生成器,因此它不会分配数组,并且应该易于其他用户理解和使用。

关于python - Julia (v1.3.1) 中是否存在 `logspace` 的任何替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59985035/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com