Julia 如何将元组作为函数参数传递

得到了一个接受三个参数的函数 f(a, b, c) = # do stuff 和另一个返回元组的函数 g() = (1, 2, 3) 如何将元组作为函数参数传递 f(g()) # ERROR 使用 julia> g() = (1,2,3) g (generic function with 1 method) julia> f(a,b,c) = +(a,b,c) f (generic function with 1 method) julia> apply(f,g())

Julia 将lambdas的向量传递给Poisson(),或关于惯用函数组合的指导

我想通过做一些贝叶斯分析来学习一点Julia。在中,他描述了从泊松-伽马模型的后验预测分布中采样的过程,其中他: 从gamma分布中采样值 通过lambda向量从泊松分布中采样值 这是R中的情况: a <- 2 b <- 1 sy1 <- 217; n1 <- 111 theta1.mc <- rgamma(1000, a+sy1, b+n1) y1.mc <- rpois(1000, theta1.mc) 当我一开始被推到分布函数上时,我不需要向量,就

Julia中的生成器表达式

我试图在Julia中实现一个生成器表达式,但遇到了一个错误,我不知道如何修复 julia> using JSON julia> path = "test.txt" julia> JSON.parse(readline(open(path))) Dict{String,Any} with 16 entries: "nk" => 1 "cy" => "Danvers" "c" => "US" "hh" => "1.usa.gov"

将参数约束在Julia函数签名中的一组值中

Julia中是否有方法指定函数参数可以通过类型注释获取一组值中的一个?例如,假设我有一个函数foo,它接受一个参数 function foo(x::String) print(x) end 参数x只能是字符串。是否有办法在函数签名中进一步约束它,使其只能是例如字符串“right”、“left”或“center”中的一个。这将是对值的分派,这在Julia中是不可能的。 我不确定您的实际应用程序是什么,但可能有一些适当的解决方法,例如: abstract Sam81Args type Ar

在Julia中传输数据时解析文本文件中的最后位置值时出错

我正在流式传输字符串,并将它们从.dat解析为float/int。在处理字符串中的最后一项之前,一切都进展顺利,该项返回一个错误 示例数据: x = "15505052|B|Other|2.22|250022|2776|09/2019|01/2004|" y = split(x, "|") # <-- one inner loop of the loop if isblank(y[9]) == false floater = parse(Float64, y[9]) end

Julia 参数型内构造函数

我对参数类型的内部构造函数中的类型注释有点困惑 以下4种方法在JIT推理效率和运行时效率方面有什么不同吗 immutable MyType{T} x::T MyType{T}(x::T) = new{T}(x + x) end immutable MyType{T} x::T MyType(x::T) = new{T}(x + x) end immutable MyType{T} x::T MyType(x::T) = new(x + x) e

如何在Julia中自动重新启动长作业

我正在使用一组计算机执行一项长任务。有时,进程被中断,我必须手动重新启动。当晚发生中断时,停机时间相当长。我想知道是否有一种方法可以在Julia中运行一个监控脚本来监控作业是否在Julia的另一个实例中运行。如果进程被中断,它将重新启动进程,并在作业完成后终止。不幸的是,我不知道如何确切地检查进程是否正在运行以及如何重新启动进程。以下是我的大致想法: state = true while state == true #check every minute sleep(60)

某些条件为真的数组行号,单位为Julia

如果我有 julia> a = [1 0; 2 1; 3 1; 7 0; 5 1; 4 0;] 6×2 Array{Int64,2}: 1 0 2 1 3 1 7 0 5 1 4 0 获取第二列等于1的行数的最快方法是什么?或者,当第二列为1时为真,否则为假的掩码。谢谢 我认为自然的方法是查找(a[:,2]。==1)。 虽然速度可能取决于a的大小,但也应该很快 在撰写本文时进行编辑(2021年2月,Julia 1.5.3,尽管我不知道何时发生更改),没有find

如何在Julia中执行矢量化除法?

给定一个252×3数组{Float64,2}的多维数组,为什么我不能执行类似Python的操作: normalized_data=vals/vals[1,:]将每个元素除以其各自列中的第一项。这在Python中是有效的(尽管分母中使用了vals[0,:])。在Julia中,我必须使用: normalized_data=[(vals[:,1]/vals[1,1])(vals[:,2]/vals[1,2])(vals[:,3]/vals[1,3])] 这似乎真的很有限,无论我有多少列数据,都不能通用

Julia Plots.jl-将曲面颜色映射到矩阵

我试图找出如何使用plots.jl创建曲面打印。我可以从二维网格创建球面,如下所示: 但是,我想让表面颜色由一个单独的矩阵控制,如下图所示(用Python制作) 也许我应该直接使用Python绘图函数?或者直接 谢谢 您可以将控制颜色的矩阵作为fill_z关键字提供。它并不适用于所有后端,但请尝试plotljys和pyplot。正是我所寻找的-我使用pyplot和PlotlyJS进行了测试。谢谢 using Plots plotlyjs() # Read the theta and phi

Julia Plots.jl-关闭轴和轴网线

我正在尝试制作一个没有轴和网格线的曲面图。我发现我可以用grid=false关闭网格,但我找不到删除轴线的方法 surface(x2d, y2d, z2d, fill_z = color_mat, fc = :haline, grid=false) 谢谢 您几乎可以通过ticks=falseaxis=([],false)来摆脱它们,但还不能完全摆脱它们。如中所述,您应该试试showaxis=false 下面是一个适用于我的示例(在Plotly后端中) 所以你真的不能摆脱他们?所以,一个便宜的

Julia 我可以使用<;-而不是朱莉娅?

就像在R中: a <- 2 应该翻译成什么 a = 2 如果可能,请注意方法重载。否。=在Julia中不是运算符,不能分配给其他符号。=在Julia中重载过多(不是多重分派意义上的) 它绑定了一个新变量。如a=3所示。您将无法使用←而不是=,因为在Julia中不能重载绑定 它被降低到setindex。如中所示,a[i]=b被降低到setindex!(a、b、i)。不幸的是,setindex接受3个变量,而←只能接受2个变量。因此,您不能用3个变量重载= 但是,例如,您只能使用2个变量

Julia能否捕获shell命令的结果

我想在julia中捕获shell命令的结果 在ipython中,这项工作: [1]: x = ! date In [2]: x Out[2]: ['Thu Dec 14 15:34:06 PST 2017'] 我已经试过了 julia> x = ;date ERROR: syntax: unexpected ; julia> x = readstring(`date`) "Thu Dec 14 21:33:48 PST 2017\n" julia> x "Thu Dec 1

在REPL中打开特定的Julia笔记本(通过IJulia)

Julia(我使用的是0.6.2)REPL使做一些工作然后执行成为可能 julia> using IJulia julia> notebook(dir=pwd(), detached=true) 它在dir指定的目录中很好地启动了jupyter 从REPL中是否可以包括要打开的特定笔记本 这种方法很有效(但感觉像黑客): 这会产生一个相对来说没有杂乱的终端窗口,我可以继续使用。这种方式很有效(但感觉像黑客): 这产生了一个相对无杂乱的终端窗口,我可以继续使用。这对我来说最近很有效(

如何在Julia中使用map来模拟嵌套列表理解?

我想使用Julia的map函数来模拟嵌套列表理解。此功能对于并行映射(pmap)特别有用 例如,此嵌套列表 [x+y for x in [0,10] for y in [1,2,3]] 产生了很好的效果 6-element Array{Int64,1}: 1 2 3 11 12 13 还有这个 [x+y for x in [0,10], y in [1,2,3]] 生产同样好的产品 2×3 Array{Int64,2}: 1 2 3 11 12 13

Julia 朱莉娅:将变量点更改为方法中的新位置

我正在编写一个链表,从普通节点开始,以Nil节点结束,下面是我的代码: abstract type LinkedList end struct Nil <: LinkedList end mutable struct Node <: LinkedList value::Any nextNode:: LinkedList end function append!(headNode::LinkedList, ele::Any) if isa(headNod

Julia “为什么有?”;夹&引用;夹钳;,及;钳子&引用;朱莉娅?

朱莉娅有:clamp和clamp。使用点表示法,夹紧。也可用于相同的功能 clamp将标量限制为由两个值定义的间隔 钳制。对数组中的元素逐个进行操作,以将每个值限制在该间隔内。它还可以处理不在数组中的整数和浮点 夹钳对整个数组进行操作,以将每个值限制为间隔 为什么有三个函数做同一件事?是否有任何理由使用夹具或夹紧,当夹紧时。将处理标量和数组?实际上您有两个函数夹紧和夹紧 函数clamp只接受所有参数的标量。因此,唯一可接受的用法是像夹具(3,4,5) 功能夹紧接受数组作为第一个参数,接受标量作为

Julia 朱莉娅:把字符串传给宏

假设我有一个宏定义为: macro foomacro(ex::Expr) dump(ex) ex end 目前,我希望以解析字符串的形式传递表达式,以便传递通过字符串串联获得的相当复杂且大小写相关的表达式 然而,尝试: @foomacro 1+2+3 给出了预期的结果6 @foomacro parse("1+2+3") 返回解析后的表达式:(1+2+3),而不是实际解析它 据我所知,这两个宏应该接收相同的表达式,但显然不是这样 我如何让这个MWE工作 ps:我想出了这个解决

Julia 双数范围

我在处理范围内的双数时遇到了一个问题。具体而言: using ForwardDiff: Dual t = Dual.((0.0,10.0),0) (t[1]:1/60:t[2])[end] 问题似乎是[end]使用了last来计算步数,因此有些东西试图转换为整数,但失败了。有人知道解决这个问题的方法吗?您可以这样解决: using ForwardDiff: Dual, value t = Dual.((0.0,10.0),0) Base.Integer(x::Dual) = Integer(v

用Julia Mmap复制一个大文件

我有一个大文件(75GB)内存映射到一个数组d,我想复制到另一个m中。因为我没有可用的75GB RAM,所以我做到了: for (i,v) in enumerate(d) m[i] = v end 以便在值之后复制文件值。但我在SSD上获得了约2MB/s的拷贝速率,我希望读写速度至少为50MB/s 如何优化此复制速率 ==[编辑]=== 根据评论,我将代码更改为以下代码,从而将写入速率提高到15MB/s function copydcimg(m::Array{UInt16,4}, d:

Julia Plots.jl和多面箱型图

在Julia中,我成功地获得了具有以下最小工作代码的箱线图: using Plots using DataFrames function boxplot_smaa_similarity(arr_nb_alternative::Vector{Int}, arr_nb_montecarlo::Vector{Int}, nb_criteria::Int, nb_si

试图在Windows上的Julia中安装Pardiso

我正在尝试在Windows上安装Pardiso 6(非mkl)版本。() 我按照说明创建了环境变量以指向Pardiso libpardiso600-WIN-X86-64.dll文件。然而,我得到了一个错误 Pkg.build(“Pardiso”)的输出是: 无法加载库 “C:/Users/XXX/Documents/JuliaPardiso/libpardiso600-WIN-X86-64.dll”的 找不到指定的模块。帕迪索图书馆 ============正在查找名为libpardiso600

Julia 获取文件/复杂代码的整个AST

朱莉娅手册: 每个Julia程序都以字符串的形式开始生命: julia> prog = "1 + 1" "1 + 1" 我可以通过quote/code.*或使用Meta.parse/Meta.show\u sexpr来轻松获得简单表达式的AST,甚至可以获得函数 问题是:有没有办法获得整个代码段的AST,可能包括几个原子表达式?例如,读取源文件并将其转换为AST?Julia解析器的FemtoLisp实现中有。您可以从Lisp REPL(julia--Lisp)调用它,它将为整个文件返回一

Julia 如何一次绘制一个简单的图形

我有一些简单的代码,一次计算一个值。我想要一个随着代码运行而更新的绘图。在每次迭代中,我计算y轴的一个新值,称为avesofar。我想用这个新值在x-index I处绘制另一个点 using Plots function hamming4(bits1::Integer, bits2::Integer) return count_ones(bits1 ⊻ bits2) end function random_strings2(n, N) mask = UInt128(1) &l

Python函数调用的参数是Julia中的保留字

我正在使用yfinance软件包()学习Julia,遇到了一个问题,其中的一个参数也是Julia中的一个保留字 using PyCall y = pyimport("yfinance") data = y.download("SPY AAPL", start="2017-01-01", end="2017-04-30") # does not work #data = y.download("SPY", start="2018-01-01") #works 错误消息: LoadError

Julia 按另一个数组的顺序对数组排序

我有 及 如何按照b元素的顺序对a进行排序 因此,为了解释,b中元素的顺序是已排序元素的索引([3,1,2])。我想用它来做到这一点: b = [7, 10, 5] 您正在寻找: sortperm(v;alg::Algorithm=DEFAULT\u不稳定,lt=isless,by=identity,rev::Bool=false,order::Ordering=Forward) 返回一个排列向量I,它将v[I]按排序。使用与sort!相同的关键字指定顺序。即使排序算法不稳定,排列也保证稳定,

Julia函数组合(∘;)运算符的ASCII替代方案?

Julia中的函数组合运算符是否有ASCII别名,∘ 一般来说,有没有办法找到运算符的ASCII/Unicode变体 julia> ∘ ∘ (generic function with 2 methods) ^尝试过这个,≈有一个备选方案: julia> ≈ isapprox (generic function with 8 methods) 对于∘没有替代AFAICT。您可以通过运行以下命令进行检查: julia> methods(∘) # 3 methods for g

Julia 如何在Clustering.jl中将基于距离的算法转换为基于点的DBscan算法进行离群点检测

我正在尝试使用DBscan检测大型数据集的异常值。然而,由于其巨大的尺寸,它给出了内存不足的错误。在DBSCAN()的文档中可以看出,基于点的算法占用的内存更少,而且效率更高 但是,我不理解如何正确地将其转换为基于点的格式。我希望从基于点的方法得到相同的输出 基于距离的方法代码 using Clustering using Statistics using Distances d = randn( 1000 ); c = vcat( d, [ 9999, 8888 ] ); dist =

它能够使用PyCall.pyimport编译Julia脚本吗?

我必须编译一个Julia脚本并在其中使用opencv python。 如果可行,如何编译? 我应该用什么?>PackageCompiler?这可以通过PackageCompiler.jl实现。您可能需要设置一些工件,如下所述: 您可以在此处了解有关Julia Artifacts系统的更多信息: 还值得在PackageCompiler.jl repo上打开一个问题并询问是否有任何工作或测试通过PackageCompiler将Julia和Python结合起来,以避免陷入死胡同。我不确定我是否理解您的

Julia 声明任意数量的变量以创建多项式环

我希望有一个n=a的算法(其中a是我选择的任何数字),这样 Julia知道我用@polyvar 您建议我使用哪个软件包来执行此操作?类型多项式 感谢您的帮助通常您几乎总是使用Vectors来执行以下操作: julia> a=3 3 julia> x = [n for n in 1:a] 3-element Vector{Int64}: 1 2 3 julia> x[2] 2 当一个场景不是最好的主意时,很难去想它 然而,如果你真的需要,你可以做一个宏。Julia宏的

Julia 在冥王星中交互使用牛虻

我在冥王星使用牛虻,我试图弄清楚是否有可能在冥王星笔记本上有互动版本的情节。如果我只使用REPL,Gadfly会生成非常好的交互式绘图,并在我的web浏览器中打开: using Gadfly plot([sin, cos], 0 , 4) 然而,如果我在冥王星使用牛虻,笔记本中包含的情节不是互动的,而是静态的。这是冥王星笔记本的一个简单示例: ### A Pluto.jl notebook ### # v0.12.20 using Markdown using InteractiveUtil

在Julia中旋转数组

假设我有一个数组 dt = Array([77 1 2 3 4;20210101 0.1 0.1 0.2 0.3;20210102 -0.1 0.05 0.2 0.3; 20210103 0 0.05 0.7 0.3]) 第一行是公司ID(可以忽略[1,1]中的77)。因此,数组表示三天内(从2021年1月1日到2021年1月3日)三家公司(1、2、3和4)的数据 我要做的是旋转此阵列,使其看起来像: 这里的3列分别是日期、公司ID和数据 为此,我的代码如下 data_names = Ve

Julia中的流数据

目前,有没有一种好方法可以以流式方式读取Julia中的数据 例如,假设我有一个CSV文件太大,无法放入内存。目前是否有内置的函数或库可以方便地使用它 我知道DataFrames中的原型数据流功能,但目前还没有通过公共API公开。eachline函数将IO源转换为行的迭代器。这应该允许您一次读取一行文件。如果将每一行转换为IOBuffer,readcsv和readdlm函数可以从中读取每一行 for ln in eachline(open("file.csv")) data = readcsv

当函数被传递给函数时,Julia编译器似乎不会进行优化

第二次编辑:在github上将修复此问题。只要运行Julia v0.5+,匿名函数将与常规函数一样快。所以案子结束了 编辑:我已将问题和函数定义更新为更一般的情况 举个简单的例子,当一个函数被传递给一个函数或函数中定义了一个函数时,Julia编译器似乎不会进行优化。这让我感到惊讶,因为这在优化包中非常常见。我是对的还是做了傻事?下面是一个简单的例子: f(a::Int, b::Int) = a - b #A simple function function g1(N::Int, fIn:

Julia 我是否可以向函数添加一个方法,以作为参数接收另一个特定函数?

我已经创建了我的不可变的Tensor\u字段和一个作用于该张量的函数nabla(即nabla(a::Tensor\u字段)=做点什么 我为张量的函数dot添加了一个方法:Base.dot(a::tensor\u字段,b::tensor\u字段)=做点什么… 现在我想定义一个新的行为,用nabla作为参数来运行dot。 类似于Base.dot(nabla::function,a::Tensor_field)=做一些不同的事情 我知道在Julia中,我们可以将函数作为参数传递给其他函数,但我在文档中

使用小批量时Julia MXNet中的BoundersError

我试图在Julia 0.6.0中重现一些Python MXNet代码,如果我尝试使用小于输出维度的批处理大小,我会得到一个BoundersError。如果我在一个玩具示例中使用较大的批处理大小,事情会正常工作,网络会收敛到正确的解决方案,但在我的应用程序中,输出维度较大,因此这是不实际的 下面是一个线性回归示例,给出了此错误: using MXNet net = mx.Variable(:data) net = mx.FullyConnected(net, name=:fc0, num_hidd

Julia中具有破坏性函数的用户定义类型的并行化

我有以下代码: mutable struct T a::Vector{Int} end N = 100 len = 10 Ts = [T(fill(i, len)) for i in 1:N] for i = 1:N destructive_function!(Ts[i]) end 破坏性功能在Ts的每个元素中更改a 有没有办法将for循环并行化SharedArray似乎不适用于用户定义的类型。在这种情况下,使用线程而不是进程来并行化循环会更简单 Threads.@threa

Julia 数组的结构:类型错误

我不理解以下两种结构定义之间的区别。第一个可以正常工作,而第二个给出了类型错误: julia> struct point1 xy::Vector{Float64} end julia> struct point2 xy::Array{Float64,1}(2) end ERROR: TypeError: point2: in type definition, expected Type, got Array{F

如何在Julia中的两组顶点之间添加元素边

在Julia中使用LightGraphs对无向图g运行命令connected\u components后,我得到以下结果: 9-element Array{Array{Int64,1},1}: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10 … 41, 42, 43, 44, 45, 46, 47, 48, 49, 50] [51, 52, 53, 54, 55, 56, 57, 58, 59, 60 … 91, 92, 93, 94, 95, 96, 97, 98,

如何在Julia结构中定义常量

我想定义一个结构: struct unit_SI_gen x::Float32 const c = 2.99792458e8 speed(x)=c*x end 但是,它会引发一个错误: syntax: "c = 2.99792e+08" inside type definition is reserved 我知道我不能在python中使用struct作为类,但我找不到如何解决这个问题 如何在struct中定义常量 我支持@Tasos的评论,你应该先熟悉一下Julia的

Julia 1.0中的关键字(或保留字)

如何获取正在运行的Julia版本的关键字信息 例如,Python 3.6中有33个关键字,但2.7中只有31个: # This is Python 3.6 code running in a file: import keyword print(len(keyword.kwlist)) ## Output: 33 # This is Python 2.7 code running in a file: import keyword print len(keyword.kwlist) ## Ou

julia中是否有诸如repmat for struct之类的函数?

你能帮帮我吗。我想在Julia中生成结构的总体。在matalab中,我们可以使用repmat作为结构。但在朱莉娅身上,这是不可能的。《朱莉娅》中有类似repmat的功能吗 例如: npop=20; struct individual position cost end individual1=individual([],[]) repmat(individual1,npop,1) repeat(individual1,npop,1) 及 但是我在Julia中找不到像rep

打印帮助?Julia中函数的信息

标题很好地概括了这一点。有没有一种简单的方法可以远程显示函数的帮助信息 DispHelp = function(query_string) # Enter help mode as you would by pressing `?` and query the given string print(help_text) return help_text end 有什么想法吗?可能有 julia-1.2> for f in [sin, cos, tan]

(Julia 1.x)通过初始化变量增加分配?

我正在编写的程序有一个用户编写的文件,其中包含要在代码中读取和实现的参数。用户应该能够通过使用注释字符(我使用了“#”,与Julia的约定)对输入文件进行分隔来对其进行注释-在解析输入文件时,代码将删除这些注释。在对这个解析器进行小优化的同时,我注意到在调用split()之前实例化第二个变量会对数字分配产生明显的影响: function removecomments1(line::String; dlm::String="#") str::String = "" try

什么';这个Julia函数怎么了?

我试图在Julia中创建稀疏矩阵,但目前遇到了以下问题: ERROR:MethodError:没有与createA(::DataFrame)匹配的方法 我做错了什么?我怎么修理它? 代码如下: import SparseMatrixDicts import DataFrames import CSV function createA() t1 = argmin(argmax(keg[Array(keg[:dad] .> 0) .& Array(argmax(keg[:mum

Julia圆形包含

我的目标是:对于一个项目,能够包含本地文件(同一个项目的一部分,同一个确切的目录),非常简单,可能是循环的 在Julia中,假设我有以下文件: 文件1.jl module A include("FILE2.jl") using B # Type annotations that need types from B end 文件2.jl module B include("FILE1.jl") using A # Type annotations

Julia 朱莉娅';使用fortran包装的右侧时,s微分方程包失败

我试图用Julia的微分方程方法解一个常微分方程组。我的颂歌的右边是包着的。这是我的代码: using DifferentialEquations function rhs(dNdt,N,p,t) ccall((:__atmos_MOD_rhs, "./EvolveAtmFort.so"), Cvoid,(Ref{Float64}, Ref{Float64},Ref{Float64}),t,N,dNdt) end N0 = [0.0,298.9,0.0562,22.

带有相等运算符的Julia表达式不起作用

以下代码按预期工作: x = 1 exp = Expr(:(=), :x, 4) # :(x = 4) eval(exp) # x is now equal to 4 as expected 以下代码失败: x = 1 exp = Expr(:(==), :x, 4) # Got :($(Expr(:(==), :x, 4))) instead of the expected :(x == 4) eval(exp) # ER

上一页   1   2   3   4    5   6  ... 下一页 最后一页 共 85 页