我已经看到Julia adecuately解释了"MAT"文件,这些文件中有结构,这些文件被读作字典而没有问题.现在我已经创建了一个我自己的字典,它具有以下结构
(String, String)=> [ Int, Int, Int]
Run Code Online (Sandbox Code Playgroud)
在每个条目上.我可以保存它,writeddlm它会生成一个非常有序的表格文本文件,由tabs(\t)分隔,但是如果不进行大量的解析,我就无法检索它.如果我使用readdlm我得到一个类型为Any的数组,每行都有非常不合适的结构
"(\"Bla bla\", \"tururu\")" "[a, b, c]"
Run Code Online (Sandbox Code Playgroud)
也就是说,两列字符串包含诸如'"'和之类的符号'['.
我在一台机器上有一个新的Julia instalation,我想用它作为实验室中各种人的数字运算服务器.似乎有一个名为jupyterhub的漂亮包,它使得Jupyter Notebook界面可以同时为各种客户提供服务.我再也找不到的网页开始提示"首先在全球安装IJulia,然后安装JupyterHub ......"
我似乎无法找到一种在全球范围内安装ONE软件包的好方法.
我正在使用Julia中的PyPlot库进行绘图,并且散布函数似乎有一点"不便",即只接受坐标作为两个参数:一个数组用于所有x值,另一个用于所有y值,即
scatter(xxs,yys)
Run Code Online (Sandbox Code Playgroud)
用x=[x1,x2,...],和y=[y1,y2,...].
如果我有一个具有坐标点的集合或元组,例如,
A=([x1,y1],[x2,y2],...)
Run Code Online (Sandbox Code Playgroud)
直接在Python中使用pyplot/matplotlib解决了一个内核中的不便,正如StackOverflow中所述:
plt.scatter(*zip(*li))
Run Code Online (Sandbox Code Playgroud)
但似乎Julia上的拉链完全不同.到目前为止,我已经提出了以下解决方案,但它似乎相当不优雅:
x=[]
y=[]
for j in selectos
append!(x,j[2])
append!(y,j[1])
end
scatter(x,y, marker="o",c="black")
Run Code Online (Sandbox Code Playgroud)
是否有更"功能"或单线(或双线)方法?
我在 Julia 中有一个函数需要在循环中执行操作。一个参数被传递给循环,这个参数越大,函数越慢。我想有一条消息来知道它在哪个迭代中,但似乎 Julia 在打印任何东西之前等待整个函数完成。这是 Julia 1.4。这种行为不在 Julia 1.3 上。一个例子是这样的
function f(x)
rr=0.000:0.0001:x
aux=0
for r in rr
print(r, " ")
aux+=veryslowfunction(r)
end
return aux
end
Run Code Online (Sandbox Code Playgroud)
事实上,当调用 f 时,它在完成之前不会打印任何内容。
我在Julia上制作了一个直方图字典,里面有很多条目.键是4个元素的整数数组,因为对该对象的简单调用返回:
In[88] Histogramas
Out[88] Dict{Array{Int64,N},Array{T,N}} with 36540 entries:
[56,8,39,55] => [0,2,4,7,19,44,61,76,124,116 … 0,0,0,0,0,0,0,0,0,0]
[64,20,48,55] => [284,368,202,106,35,3,2,0,0,0 … 0,0,0,0,0,0,0,0,0,0]
[54,9,50,54] => [0,0,0,0,0,0,0,0,0,2 … 1,0,0,0,0,0,0,0,0,0]
[37,26,45,61] => [0,6,11,35,47,86,113,133,136,139 … 0,0,0,0,0,0,0,0,0,0]
[37,15,51,50] => [673,272,48,5,2,0,0,0,0,0 … 0,0,0,0,0,0,0,0,0,0]
[35,22,53,45] => [331,370,201,69,25,4,0,0,0,0 … 0,0,0,0,0,0,0,0,0,0]
[37,25,56,40] => [460,382,127,27,3,0,1,0,0,0 … 0,0,0,0,0,0,0,0,0,0]
....
Run Code Online (Sandbox Code Playgroud)
但是,如果我打电话,Histogramas.keys那么我得到这个非常奇怪的输出:
Out[90] : 65536-element Array{Array{Int64,N},1}:
#undef
#undef
[56,8,39,55]
#undef
[64,20,48,55]
[54,9,50,54]
#undef
[37,26,45,61]
[37,15,51,50]
...
Run Code Online (Sandbox Code Playgroud)
所以我得到了几乎两倍的密钥,因为有字典的条目,而且大多数额外的是#undef,顺便说一句,我也不知道这意味着什么.¿在什么意义上未定义?
我试图打开一个我对其内部结构有一些了解的二进制文件,并在 Julia 中正确地重新解释它。假设我可以通过以下方式加载它:
arx=open("../axonbinaryfile.abf", "r")
databin=read(arx)
close(arx)
Run Code Online (Sandbox Code Playgroud)
数据作为 UInt8 数组加载,我猜是字节。在前 4 个中,我可以执行一个简单的Char转换并且它有效:
head=databin[1:4]
map(Char, head)
4-element Array{Char,1}:
'A'
'B'
'F'
' '
Run Code Online (Sandbox Code Playgroud)
然后碰巧在位置 13-16 是一个等待解释的 32 个字节的整数。我该怎么做?我试过reinterpret()和Int32作为功能,但无济于事。
在Julia中,许多Base和更接近的相关函数也是用纯Julia编写的,代码很容易实现.可以浏览存储库或本地下载的文件,并查看函数的编写/实现方式.但我认为已经有一些内置的方法可以为你做到这一点,所以你可以在REPL或Jupyter Notebook中编写如下内容:
@code functioninquestion()
得到类似的东西:
functioninquestion(input::Type)
some calculations
return
end
没有分页通过代码.我只是不记得方法或电话.我已经阅读了手册的反思/反思部分,但我似乎无法在那里使用任何东西.我试过methods,methodswith,code_lowered,expand,似乎无法让他们给我want-
Okey,我想绘制一些存储在Julia中的数组文本文件(通常为表格文本文件)中的点。data=readdlm("FileInCase01.dat")如果文件不为空,我可以简单地检索值
。如果文件为空,我想要data=[]一个空数组和一个空图。该文件始终存在。所以isfile没有用。但有时它是空的。如果我尝试readdlm在空文件上使用,它将返回错误:
LoadError: at row 0, column 0 : ArgumentError("number of rows in dims must be > 0, got 0")
while loading In[21], in expression starting on line 2
这表明readdlm无法返回空数组。因此,我必须事先检查文件是否为空。那应该怎么做?
哦,这看起来相当愚蠢,但我无法以干净的方式制作:如何根据某一列中的条件在Julia中裁剪阵列?更具体地说,我有一个二维数组,有三列.第三个是随着指数单调增加.所以我想得到包含所有三列的Subarray,直到第三列达到某个指定值而不再有.