小编Jaf*_*rov的帖子

如何在 Julia 中模仿 Pythonic 数组索引

我正在将代码从 Python 翻译为 Julia。我有以下数组:

_DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
Run Code Online (Sandbox Code Playgroud)

以及以下代码行:

_DAYS_IN_MONTH[index] - _DAYS_IN_MONTH[index - 1]
Run Code Online (Sandbox Code Playgroud)

这个想法是,如果index - 1计算结果为 -1,那么我们将获得数组的最后一个元素,这正是我们在本例中所需要的。然而,这在 Julia 中不起作用。当然,我可以写这样的东西:

if index == 1
    _DAYS_IN_MONTH[index] - _DAYS_IN_MONTH[end]
else
    _DAYS_IN_MONTH[index] - _DAYS_IN_MONTH[index - 1]
end
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有一种更优雅和“朱利安”的方式来做到这一点。

arrays indexing julia

8
推荐指数
3
解决办法
732
查看次数

在Python中导出模块组件

在 Julia 中,可以导出模块的函数(或变量、结构等),然后可以在另一个脚本中调用它而无需命名空间(一旦导入)。例如:

# helpers.jl
module helpers

function ordinary_function()
# bla bla bla
end

function exported_function()
# bla bla bla
end

export exported_function()
end
Run Code Online (Sandbox Code Playgroud)
# main.jl
include("helpers.jl")
using .helpers

#we have to call the non-exported function with namespace
helpers.ordinary_function()

#but we can call the exported function without namespace
exported_function()
Run Code Online (Sandbox Code Playgroud)

Python 中有这个功能吗?

python import module julia

5
推荐指数
2
解决办法
8637
查看次数

如何知道哪个模块导出某个函数

我正在浏览这个 Flux.jl 教程并遇到了一个名为Chain.

m = Chain(Dense(10, 5, relu), Dense(5, 2), softmax)
Run Code Online (Sandbox Code Playgroud)

它不是从任何使用的模块导入的,也没有使用命名空间,所以我不知道它属于哪个模块。虽然我设法发现我属于 Flux 包,但我想知道脚本中是否有一种通用的方法可以解决这个问题。

module package julia flux.jl

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

isless 函数的新调度不起作用

我需要能够比较名为 的结构体的实例Hijri,因此我为该函数定义了一个新方法,isless()如下所示:

function isless(a::Hijri, b::Hijri)
    tuple_a = datetuple(a)
    tuple_b = datetuple(b)
    
    return tuple_a < tuple_b
end
Run Code Online (Sandbox Code Playgroud)

datetuple()以元组形式返回Hijri结构体的值。

这工作正常:

@show isless(a, b)
Run Code Online (Sandbox Code Playgroud)

然而,这个

@show a < b
Run Code Online (Sandbox Code Playgroud)

抛出错误:

ERROR: LoadError: MethodError: no method matching isless(::Main.HijriConverter.Hijri, ::Main.HijriConverter.Hijri)
Closest candidates are:
  isless(::Any, ::Missing) at ~/Downloads/julia-1.7.0/share/julia/base/missing.jl:88
  isless(::Missing, ::Any) at ~/Downloads/julia-1.7.0/share/julia/base/missing.jl:87
Stacktrace:
 [1] <(x::Main.HijriConverter.Hijri, y::Main.HijriConverter.Hijri)
   @ Base ./operators.jl:352
 [2] top-level scope
   @ show.jl:1047
in expression starting at /home/jafar_isbarov/Documents/projects/hijri/HijriConverter.jl/src/HijriConverter.jl:1
Run Code Online (Sandbox Code Playgroud)

可能是什么原因?

julia

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

标签 统计

julia ×4

module ×2

arrays ×1

flux.jl ×1

import ×1

indexing ×1

package ×1

python ×1