如何解决如何理解 Julia 中的几个符号和语法?
我对 Julia 语言很陌生,所以我开始阅读文档和所有内置函数。现在,我正在为我的工作学习一个 github 项目。由于我对 Python 更熟悉,因此我尝试根据自己的理解将 Julia 的代码翻译成 Python,但是我遇到了一些我不理解的奇怪语法,并且被它们卡住了。谁能指出这些语法的含义?提前致谢!
我不明白的语法
那些我不理解的 julia 代码行,因为我也没有在文档中找到它们。
var1 = Tuple{Integer,Vector}[]
这里我们声明了对象 var 1,一个真实的例子是什么?什么是python版本?
如果X::Matrix,n::Int
,那么下面的?
是什么意思?我应该如何在 python 中编码?
K = [( i >= j ? dot(view(X,:,i),view(X,j)) : 0.0 )::Float64 for i=1:n,j=1:n]
我们应该如何在 python 中编写代码?
另外,我不确定下面 ->
的含义:
for i=1:n
id_i = find(x -> x[1] == i,var1)
xi_i_list = map(x -> x[2],var1[id_i])
how should we translate this into python?
最后,我只是不明白下面 .>
的含义:
act= zeros(100)
alpha = zeros(10)
for i=1:100
idx = find(x::Tuple{Integer,Vector} -> x[1] == i,var1)
act[i] = sum(alpha[idx] .> 1e-3)
作为一个新手,我试图了解 find()
、map()
的作用。最好,我希望我能用 Python 编写上述 Julia 代码。但是我很难理解代码。任何人都可以出于学习目的给出可能的解释和相应的python代码吗?提前致谢!
解决方法
首先,Julia 文档提供了一个 Noteworthy differences from Python 列表。现在回答每个问题:
var1 = Tuple{Integer,Vector}[]
这里我们声明了对象 var 1,一个真实的例子是什么?什么是python版本?
Vector
是 Array{T,1} where T
的糖,表示具有任何类型元素的一维数组。
Tuple{Integer,Vector}
因此是一个带有 Integer
和 Vector
的元组,例如 (1,[1,2])
。
var1
只是此类元组的空向量。
您可以将类似后者的 push!
元素放入 var1
以创建“真实”示例:
julia> var1 = Tuple{Integer,Vector}[]
Tuple{Integer,Array{T,1} where T}[]
julia> push!(var1,(1,2]))
1-element Array{Tuple{Integer,1} where T},1}:
(1,2])
julia> push!(var1,(2,[3.0,"foo",4]))
2-element Array{Tuple{Integer,2])
(2,Any[3.0,4])
?
的含义是什么
您可以在 julia 中输入 ?
以访问“帮助”模式,然后询问它 ?
是什么。来自其文档:
a ? b : c
条件的缩写;阅读“如果 a,评估 b 否则评估 c”。也称为 ternary operator。
此语法等效于 if a; b else c end
,但通常用于强调值 b
-or-c
,该值用作较大表达式的一部分,而不是侧面评估 b
或 c
可能产生的影响。
有关详细信息,请参阅有关控制流的手册部分。
例子julia> x = 1; y = 2;
julia> println(x > y ? "x is larger" : "y is larger")
y is larger
不确定 ->
的含义
这只是为了创建一个 anonymous function。
我只是不明白.>
的含义
这只是逐个元素的“大于”运算符 >
。有关详细信息,请参阅 dotted operators 上的文档。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。