得到了一个接受三个参数的函数
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。在中,他描述了从泊松-伽马模型的后验预测分布中采样的过程,其中他:
从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> 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中是否有方法指定函数参数可以通过类型注释获取一组值中的一个?例如,假设我有一个函数foo,它接受一个参数
function foo(x::String)
print(x)
end
参数x只能是字符串。是否有办法在函数签名中进一步约束它,使其只能是例如字符串“right”、“left”或“center”中的一个。这将是对值的分派,这在Julia中是不可能的。
我不确定您的实际应用程序是什么,但可能有一些适当的解决方法,例如:
abstract Sam81Args
type Ar
我正在流式传输字符串,并将它们从.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
我对参数类型的内部构造函数中的类型注释有点困惑
以下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的另一个实例中运行。如果进程被中断,它将重新启动进程,并在作业完成后终止。不幸的是,我不知道如何确切地检查进程是否正在运行以及如何重新启动进程。以下是我的大致想法:
state = true
while state == true
#check every minute
sleep(60)
如果我有
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
给定一个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])]
这似乎真的很有限,无论我有多少列数据,都不能通用
我试图找出如何使用plots.jl创建曲面打印。我可以从二维网格创建球面,如下所示:
但是,我想让表面颜色由一个单独的矩阵控制,如下图所示(用Python制作)
也许我应该直接使用Python绘图函数?或者直接
谢谢 您可以将控制颜色的矩阵作为fill_z关键字提供。它并不适用于所有后端,但请尝试plotljys和pyplot。正是我所寻找的-我使用pyplot和PlotlyJS进行了测试。谢谢
using Plots
plotlyjs()
# Read the theta and phi
我正在尝试制作一个没有轴和网格线的曲面图。我发现我可以用grid=false关闭网格,但我找不到删除轴线的方法
surface(x2d, y2d, z2d, fill_z = color_mat, fc = :haline, grid=false)
谢谢 您几乎可以通过ticks=falseaxis=([],false)来摆脱它们,但还不能完全摆脱它们。如中所述,您应该试试showaxis=false
下面是一个适用于我的示例(在Plotly后端中)
所以你真的不能摆脱他们?所以,一个便宜的
就像在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命令的结果
在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
Julia(我使用的是0.6.2)REPL使做一些工作然后执行成为可能
julia> using IJulia
julia> notebook(dir=pwd(), detached=true)
它在dir指定的目录中很好地启动了jupyter
从REPL中是否可以包括要打开的特定笔记本 这种方法很有效(但感觉像黑客):
这会产生一个相对来说没有杂乱的终端窗口,我可以继续使用。这种方式很有效(但感觉像黑客):
这产生了一个相对无杂乱的终端窗口,我可以继续使用。这对我来说最近很有效(
标签: Julia
list-comprehension
我想使用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
我正在编写一个链表,从普通节点开始,以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
朱莉娅有:clamp和clamp。使用点表示法,夹紧。也可用于相同的功能
clamp将标量限制为由两个值定义的间隔
钳制。对数组中的元素逐个进行操作,以将每个值限制在该间隔内。它还可以处理不在数组中的整数和浮点
夹钳对整个数组进行操作,以将每个值限制为间隔
为什么有三个函数做同一件事?是否有任何理由使用夹具或夹紧,当夹紧时。将处理标量和数组?实际上您有两个函数夹紧和夹紧
函数clamp只接受所有参数的标量。因此,唯一可接受的用法是像夹具(3,4,5)
功能夹紧接受数组作为第一个参数,接受标量作为
假设我有一个宏定义为:
macro foomacro(ex::Expr)
dump(ex)
ex
end
目前,我希望以解析字符串的形式传递表达式,以便传递通过字符串串联获得的相当复杂且大小写相关的表达式
然而,尝试:
@foomacro 1+2+3
给出了预期的结果6
@foomacro parse("1+2+3")
返回解析后的表达式:(1+2+3),而不是实际解析它
据我所知,这两个宏应该接收相同的表达式,但显然不是这样
我如何让这个MWE工作
ps:我想出了这个解决
标签: Julia
automatic-differentiation
我在处理范围内的双数时遇到了一个问题。具体而言:
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
memory-mapped-files
我有一个大文件(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中,我成功地获得了具有以下最小工作代码的箱线图:
using Plots
using DataFrames
function boxplot_smaa_similarity(arr_nb_alternative::Vector{Int},
arr_nb_montecarlo::Vector{Int},
nb_criteria::Int, nb_si
我正在尝试在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
metaprogrammingabstract-syntax-tree
朱莉娅手册:
每个Julia程序都以字符串的形式开始生命:
julia> prog = "1 + 1"
"1 + 1"
我可以通过quote/code.*或使用Meta.parse/Meta.show\u sexpr来轻松获得简单表达式的AST,甚至可以获得函数
问题是:有没有办法获得整个代码段的AST,可能包括几个原子表达式?例如,读取源文件并将其转换为AST?Julia解析器的FemtoLisp实现中有。您可以从Lisp REPL(julia--Lisp)调用它,它将为整个文件返回一
我有一些简单的代码,一次计算一个值。我想要一个随着代码运行而更新的绘图。在每次迭代中,我计算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
我正在使用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
我有
及
如何按照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中的换行符
julia> read(`echo hi`,String)
"hi\n"
使用readchomp:
julia> readchomp(`echo hi`)
"hi"
标签: Julia
function-composition
Julia中的函数组合运算符是否有ASCII别名,∘
一般来说,有没有办法找到运算符的ASCII/Unicode变体
julia> ∘
∘ (generic function with 2 methods)
^尝试过这个,≈有一个备选方案:
julia> ≈
isapprox (generic function with 8 methods)
对于∘没有替代AFAICT。您可以通过运行以下命令进行检查:
julia> methods(∘)
# 3 methods for g
我正在尝试使用DBscan检测大型数据集的异常值。然而,由于其巨大的尺寸,它给出了内存不足的错误。在DBSCAN()的文档中可以看出,基于点的算法占用的内存更少,而且效率更高
但是,我不理解如何正确地将其转换为基于点的格式。我希望从基于点的方法得到相同的输出
基于距离的方法代码
using Clustering
using Statistics
using Distances
d = randn( 1000 );
c = vcat( d, [ 9999, 8888 ] );
dist =
我必须编译一个Julia脚本并在其中使用opencv python。
如果可行,如何编译?
我应该用什么?>PackageCompiler?这可以通过PackageCompiler.jl实现。您可能需要设置一些工件,如下所述:
您可以在此处了解有关Julia Artifacts系统的更多信息:
还值得在PackageCompiler.jl repo上打开一个问题并询问是否有任何工作或测试通过PackageCompiler将Julia和Python结合起来,以避免陷入死胡同。我不确定我是否理解您的
我希望有一个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
visualizationgadflypluto.jl
我在冥王星使用牛虻,我试图弄清楚是否有可能在冥王星笔记本上有互动版本的情节。如果我只使用REPL,Gadfly会生成非常好的交互式绘图,并在我的web浏览器中打开:
using Gadfly
plot([sin, cos], 0 , 4)
然而,如果我在冥王星使用牛虻,笔记本中包含的情节不是互动的,而是静态的。这是冥王星笔记本的一个简单示例:
### A Pluto.jl notebook ###
# v0.12.20
using Markdown
using InteractiveUtil
假设我有一个数组
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中的数据
例如,假设我有一个CSV文件太大,无法放入内存。目前是否有内置的函数或库可以方便地使用它
我知道DataFrames中的原型数据流功能,但目前还没有通过公共API公开。eachline函数将IO源转换为行的迭代器。这应该允许您一次读取一行文件。如果将每一行转换为IOBuffer,readcsv和readdlm函数可以从中读取每一行
for ln in eachline(open("file.csv"))
data = readcsv
第二次编辑:在github上将修复此问题。只要运行Julia v0.5+,匿名函数将与常规函数一样快。所以案子结束了
编辑:我已将问题和函数定义更新为更一般的情况
举个简单的例子,当一个函数被传递给一个函数或函数中定义了一个函数时,Julia编译器似乎不会进行优化。这让我感到惊讶,因为这在优化包中非常常见。我是对的还是做了傻事?下面是一个简单的例子:
f(a::Int, b::Int) = a - b #A simple function
function g1(N::Int, fIn:
我已经创建了我的不可变的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中,我们可以将函数作为参数传递给其他函数,但我在文档中
我有一个DataFrame对象,如下所示:
| Row | timestamp | price | volume |
|-----|---------------------|-------|--------|
| 1 | 2011-08-14T14:14:40 | 10.40 | 0.779 |
| 2 | 2011-08-14T15:15:17 | 10.40 | 0.101 |
| 3 | 2011-08-14T15:15:17 | 10.40 | 0.
我试图在Julia 0.6.0中重现一些Python MXNet代码,如果我尝试使用小于输出维度的批处理大小,我会得到一个BoundersError。如果我在一个玩具示例中使用较大的批处理大小,事情会正常工作,网络会收敛到正确的解决方案,但在我的应用程序中,输出维度较大,因此这是不实际的
下面是一个线性回归示例,给出了此错误:
using MXNet
net = mx.Variable(:data)
net = mx.FullyConnected(net, name=:fc0, num_hidd
我有以下代码:
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> 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
edgesconnected-componentsundirected-graphlightgraphs
在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,
我想定义一个结构:
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版本的关键字信息
例如,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
julia-jumpijulia-notebookjulia-studio
你能帮帮我吗。我想在Julia中生成结构的总体。在matalab中,我们可以使用repmat作为结构。但在朱莉娅身上,这是不可能的。《朱莉娅》中有类似repmat的功能吗
例如:
npop=20;
struct individual
position
cost
end
individual1=individual([],[])
repmat(individual1,npop,1)
repeat(individual1,npop,1)
及
但是我在Julia中找不到像rep
标题很好地概括了这一点。有没有一种简单的方法可以远程显示函数的帮助信息
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的约定)对输入文件进行分隔来对其进行注释-在解析输入文件时,代码将删除这些注释。在对这个解析器进行小优化的同时,我注意到在调用split()之前实例化第二个变量会对数字分配产生明显的影响:
function removecomments1(line::String; dlm::String="#")
str::String = ""
try
我试图在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中,假设我有以下文件:
文件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
jitdifferential-equations
我试图用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
expressionevalmetaprogramming
以下代码按预期工作:
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 页