Jac*_*ack 11 printing arrays julia
我使用脚本文件在Julia中生成了许多大型数组.打印整个阵列很麻烦,但我想检查前几行是否有意义.
我知道在REPL中的打印受到屏幕尺寸的限制,例如
julia> zeros(1000,10)
1000×10 Array{Float64,2}:
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
? ?
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
Run Code Online (Sandbox Code Playgroud)
但是我在基础Julia中找不到任何打印/显示功能,它模仿脚本,比如打印出数组的前10行或类似R的东西head(我本来希望showcompact做这样的事情).
head在Julia中是否有类似R的功能,或者我必须自己编写.
Fen*_*ang 17
正如我在评论中提到的,在v0.5中执行此操作的方法是使用IOContext.
限制数据的一种非常简单的方法是将limit=true参数传递给IOContext;
julia> show(IOContext(STDOUT, limit=true), v)
[0.147959 0.414018 … 0.595528 0.852563; 0.32679 0.824953 … 0.432143 0.036279; … ; 0.877398 0.661854 … 0.197207 0.15596; 0.0522946 0.508075 … 0.835359 0.705987]
Run Code Online (Sandbox Code Playgroud)
但这仍然没有打印出REPL的方式; 那是因为show有两个参数使用单行显示.要使用多行显示,text/plain请将第二个参数传递给show(MIME类型):
julia> show(IOContext(STDOUT, limit=true), "text/plain", v)
100×100 Array{Float64,2}:
0.147959 0.414018 0.0282934 … 0.816132 0.595528 0.852563
0.32679 0.824953 0.0582351 0.822526 0.432143 0.036279
0.754989 0.724317 0.533966 0.987273 0.931932 0.973622
0.547866 0.282694 0.0295411 0.75929 0.886218 0.0813057
0.0626663 0.111795 0.625083 0.439983 0.562143 0.669046
0.712093 0.469622 0.377298 … 0.298224 0.31853 0.376066
0.774625 0.754328 0.756725 0.61113 0.76566 0.999292
0.917846 0.308363 0.489246 0.715311 0.175302 0.124059
0.310922 0.140575 0.20635 0.0280192 0.683004 0.168129
0.753361 0.755103 0.831806 0.118009 0.122374 0.281476
? ?
0.420264 0.7614 0.748408 0.330983 0.0776789 0.309464
0.984379 0.851735 0.595121 0.534982 0.255317 0.743713
0.814505 0.765941 0.71852 0.730677 0.477631 0.0360992
0.910384 0.0747604 0.490685 0.0904559 0.0756424 0.313898
0.628416 0.0790874 0.401488 … 0.523521 0.397249 0.58112
0.578361 0.336352 0.261118 0.838256 0.387374 0.451647
0.66724 0.586342 0.378968 0.602694 0.450686 0.901279
0.877398 0.661854 0.685156 0.658952 0.197207 0.15596
0.0522946 0.508075 0.244423 0.95935 0.835359 0.705987
Run Code Online (Sandbox Code Playgroud)
您当然可以通过传入以下内容displaysize来更改显示的行数IOContext:
julia> show(IOContext(STDOUT, limit=true, displaysize=(10,10)), "text/plain", v)
100×100 Array{Float64,2}:
0.147959 … 0.852563
0.32679 0.036279
0.754989 0.973622
? ?
0.877398 0.15596
0.0522946 0.705987
Run Code Online (Sandbox Code Playgroud)
总的来说,IOContext非常灵活.有关详细信息,请参阅其文档.