微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何理解 Julia 中的几个符号和语法?

如何解决如何理解 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版本?

VectorArray{T,1} where T 的糖,表示具有任何类型元素的一维数组。 Tuple{Integer,Vector} 因此是一个带有 IntegerVector 的元组,例如 (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,该值用作较大表达式的一部分,而不是侧面评估 bc 可能产生的影响。

有关详细信息,请参阅有关控制流的手册部分。

例子
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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?