在 NumPy 中,有一个函数用于返回两个数字
n
和 begin
之间以对数间隔排列的 end
点范围。
在 Julia 中你可以定义这样的东西:
10 .^(range(log10(begin), log10(end), n)
但是有这样的内置函数吗?
我在这里找到了一些相关问题:https://discourse.julialang.org/t/lazy-logspace-object/70091和https://discourse.julialang.org/t/how-to-do-logspace -in-julia-v-1-0-x/17452.
基本上,logspace 没有内置的简写方法,但是您可以使用
Iterators
实现类似的功能。
logspace(start, last, count) = Iterators.map(exp10, range(log10(start), log10(last), count))
Julia 1.11 终于有了一个内置的
logrange
函数,正如上面所要求的。在 Julia 的早期版本中,可以从 Compat.jl 包中获取它:
julia> using Compat
julia> logrange(1/4, 16, length=5)
5-element Compat.LogRange{Float64, Base.TwicePrecision{Float64}}:
0.25
0.7071067811865476
2.0
5.656854249492381
16.0
这类似于Python中的
numpy.geomspace
。但就像 Julia 的 range
或 LinRange
一样,它返回一个特殊的惰性向量类型,允许随机访问,而不需要为所有值分配所有空间。