是否有一种从一些网址获取数据的相当简单的方法?我试过最明显的版本,不起作用:
readcsv("https://dl.dropboxusercontent.com/u/.../testdata.csv")
Run Code Online (Sandbox Code Playgroud)
我没有找到任何可用的参考.有帮助吗?
如何获取特定包的版本号?
显而易见的方法是获取所有已安装软件包的字典,然后筛选出感兴趣的软件包:
pkgs = Pkg.installed();
pkgs["Datetime"]
Run Code Online (Sandbox Code Playgroud)
获取所有已安装软件包的列表非常慢,特别是如果有很多软件包.
我对Julia的内存分配感到有些困惑.我从FAQ中知道清除大变量使用的内存是通过将其设置为小(如0)然后运行来完成的gc().
但是,我对以下内容感到有些困惑.我创建一个随机Float32数组:
@time A = rand(Float32, 10000, 10000);
Run Code Online (Sandbox Code Playgroud)
time表示分配了大约400MB的RAM,而Julia的RAM使用量增加了400MB.这是有道理的.
然后我应用fft,但不要将结果绑定到任何变量:
@time fft(A);
Run Code Online (Sandbox Code Playgroud)
time 表示分配了~800MB的RAM,Julia的RAM使用量增加了800MB.
但是,RAM使用率仍然比开始时高1.2GB.这让我感到困惑,因为我没有将任何变量等同于fft(A),所以我希望分配的800MB会在fft执行后立即释放.
我试着跑gc,以为朱莉娅会意识到还有800MB的RAM被用于什么:
gc();
Run Code Online (Sandbox Code Playgroud)
这什么都不做.RAM使用率保持在~1.3GB.
但是,以下两行,
A = 0;
gc();
Run Code Online (Sandbox Code Playgroud)
释放所有正在使用的1.2GB,尽管事实上sizeof(A)只有400MB.所以我的问题是:
sizeof)实际上分配了1.2GB?Julia连接字符串和整数值的最简单方法是什么?我想做的事情如下:
julia> foo = "test: "
"test: "
julia> bar = 3
3
julia> foobar = foo * bar
ERROR: `*` has no method matching *(::ASCIIString, ::Int64)
Run Code Online (Sandbox Code Playgroud) 我使用Mathematica进行符号数学计算.我打算换成另一种语言.Matlab(我用于标准计算的东西)包括这个功能,但我正在研究使用Julia的可能性,因为它似乎是未来.然而,似乎没有可用的象征工具(在官方文档中没有提到).显然,唯一可用的软件包(SymPy)在官方网站(http://pkg.julialang.org/)上说"测试失败" .
有谁能在朱莉娅这样做?
Julia中是否有一个函数返回所需类型的数组副本,即numpys astype函数的等价物?我有一个"任何"类型的数组,并希望将其转换为Float数组.我试过了:
new_array = Float64(array)
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误
LoadError: MethodError: `convert` has no method matching
convert(::Type{Float64}, ::Array{Any,2})
This may have arisen from a call to the constructor Float64(...),
since type constructors fall back to convert methods.
Closest candidates are:
call{T}(::Type{T}, ::Any)
convert(::Type{Float64}, !Matched::Int8)
convert(::Type{Float64}, !Matched::Int16)
...
while loading In[140], in expression starting on line 1
in call at essentials.jl:56
Run Code Online (Sandbox Code Playgroud)
我可以编写一个遍历数组的函数并返回每个元素的浮点值,但是如果没有内置方法来执行此操作,我会发现它有点奇怪.
这个片段来自Julia 中Rational Numbers的实现:
# Rational.jl
# ...
Rational{T<:Integer}(n::T, d::T) = Rational{T}(n,d)
Rational(n::Integer, d::Integer) = Rational(promote(n,d)...)
Rational(n::Integer) = Rational(n,one(n))
//(x::Rational, y::Integer) = x.num // (x.den*y) <--- HERE!
# ...
Run Code Online (Sandbox Code Playgroud)
查看//函数如何实现,然后与中缀表示法一起使用?这实际上如何返回一个值?
当我看到这段代码时,我解释如下:
//使用Rational和Integer调用该函数.#2真的让我很困惑.数据结构中的递归在哪里结束?//如果不断评估任何值,如何返回值?
请帮我理解这个.
我想在蛋白质序列中每10个字符插入一个换行符:
seq="MSKNKSPLLNESEKMMSEMLPMKVSQSKLNYEEKVYIPTTIRNRKQHCFRRFFPYIALFQ"
Run Code Online (Sandbox Code Playgroud)
在Perl中,它非常简单:
$seq=~s/(.{10})/$1\n/g ; # does the job!
perl -e '$seq="MSKNKSPLLNESEKMMSEMLPMKVSQSKLNYEEKVYIPTTIRNRKQHCFRRFFPYIALFQ"; $seq=~s/(.{10})/$1\n/g; print $seq'
MSKNKSPLLN
ESEKMMSEML
PMKVSQSKLN
YEEKVYIPTT
IRNRKQHCFR
RFFPYIALFQ
Run Code Online (Sandbox Code Playgroud)
在朱莉娅,
replace(seq, r"(.{10})" , "\n")
Run Code Online (Sandbox Code Playgroud)
不起作用,因为我不知道如何获取捕获组(.{10})并将其替换为自己+"\n"
julia> replace(seq, r"(.{10})" , "\n")
"\n\n\n\n\n\n"
Run Code Online (Sandbox Code Playgroud)
所以要做到这一点,我需要两个步骤:
julia> a=matchall(r"(.{1,10})" ,seq)
6-element Array{SubString{UTF8String},1}:
"MSKNKSPLLN"
"ESEKMMSEML"
"PMKVSQSKLN"
"YEEKVYIPTT"
"IRNRKQHCFR"
"RFFPYIALFQ"
julia> b=join(a, "\n")
"MSKNKSPLLN\nESEKMMSEML\nPMKVSQSKLN\nYEEKVYIPTT\nIRNRKQHCFR\nRFFPYIALFQ"
julia> println(b)
MSKNKSPLLN
ESEKMMSEML
PMKVSQSKLN
YEEKVYIPTT
IRNRKQHCFR
RFFPYIALFQ
# Caution :
a=matchall(r"(.{10})" ,seq) # wrong if seq is not exactly a multiple of 10 !
julia> seq
"MSKNKSPLLNESEKMMSEMLPMKVSQSKLNYEEKVYIPTTIRNRKQHCFRRFFPYIAL"
julia> matchall(r"(.{10})" ,seq) …Run Code Online (Sandbox Code Playgroud) 我尝试将此处提供的NN代码移植到Julia,希望提高网络培训速度.在我的桌面上,事实证明是这样的.
然而,在我的MacBook上,Python + numpy击败了Julia.
使用相同参数进行训练时,Python的速度是Julia的两倍(4.4s vs 10.6s,一个纪元).考虑到Julia比我的桌面上的Python更快(大约2秒),似乎有一些资源,Python/numpy在mac上使用Julia不是.即使并行化代码,我也只能达到~6.6s(尽管这可能是因为我没有在编写并行代码方面经验丰富).我认为问题可能是Julia的BLAS比mac中原生使用的vecLib库慢,但是尝试不同的构建似乎并没有让我更接近.我尝试使用USE_SYSTEM_BLAS = 1和使用MKL构建两者,其中MKL给出了更快的结果(上面公布的时间).
我将发布笔记本电脑的版本信息以及我的Julia实现,以供参考.我目前无法访问桌面,但我在Windows上使用openBLAS运行相同版本的Julia,与使用openBLAS的干净安装Python 2.7相比.
这里有什么我想念的吗?
编辑:我知道我的Julia代码在优化方面有很多不足之处,我非常感谢任何提高速度的技巧.然而,这不是Julia在我的笔记本电脑上运行速度慢的情况,而是Python更快.在我的桌面上,Python在约13秒内运行一个纪元,在笔记本电脑上它只需要大约4.4秒.我最感兴趣的是这种差异来自哪里.我意识到这个问题可能有点糟糕.
笔记本电脑版本:
julia> versioninfo()
Julia Version 0.6.2
Commit d386e40c17 (2017-12-13 18:08 UTC)
Platform Info:
OS: macOS (x86_64-apple-darwin17.4.0)
CPU: Intel(R) Core(TM) i5-7360U CPU @ 2.30GHz
WORD_SIZE: 64
BLAS: libmkl_rt
LAPACK: libmkl_rt
LIBM: libopenlibm
LLVM: libLLVM-3.9.1 (ORCJIT, broadwell)
Run Code Online (Sandbox Code Playgroud)
Python 2.7.14 (default, Mar 22 2018, 14:43:05)
[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.39.2)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
>>> …Run Code Online (Sandbox Code Playgroud)