Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Types 防止Julia自动转换一维矩阵切片的类型_Types_Julia_Slice - Fatal编程技术网

Types 防止Julia自动转换一维矩阵切片的类型

Types 防止Julia自动转换一维矩阵切片的类型,types,julia,slice,Types,Julia,Slice,我只是想阻止自动类型转换,但我很难弄清楚如何做到这一点。是的,我可以直接去alpha[:,1]',但我想阻止内存重新分配。有vec()用于向另一个方向(1xn矩阵)移动,但我找不到一个函数将(nx1)矩阵保持为矩阵。使用长度为1的范围,而不仅仅是索引 与其简单地指定所需列的索引(Int64),不如指定长度为1:1:1的范围(UnitRange{Int64}) 这将诱使Julia保留2D数组类型(array{Int64,2}),而不是返回向量(array{Int64,1}) 编辑:开发人员讨论了这

我只是想阻止自动类型转换,但我很难弄清楚如何做到这一点。是的,我可以直接去
alpha[:,1]'
,但我想阻止内存重新分配。有
vec()
用于向另一个方向(1xn矩阵)移动,但我找不到一个函数将(nx1)矩阵保持为矩阵。

使用长度为1的范围,而不仅仅是索引 与其简单地指定所需列的索引(
Int64
),不如指定长度为1:
1:1
的范围(
UnitRange{Int64}

这将诱使Julia保留2D数组类型(
array{Int64,2}
),而不是返回向量(
array{Int64,1}

编辑:开发人员讨论了这个主题(感谢)


谢谢,非常方便。你怎么知道要这么做?“是在文档中的某个地方,还是你刚刚搞定的?”尼克胡闹。我仍在与Julia打交道
:)
不过,文档中可能会提到这一点。等我做完这一切,我会回来报到的。哈哈,是的。我一直在用@code\u lowered进行实验,以找出一半的时间发生了什么,但我仍然没有习惯于理解ASTsso,奇怪的是,
alpha[:,1]“
生成的程序集比
@code\u native
给出的
alpha[:,1:1]
少得多。我想,如果没有基准测试,很难说哪个更快……开发人员对这个主题的讨论是。这里间接提到了范围的技巧。我认为它不在文档中(从内存中)。
alpha = [1 2 3; 4 5 6]
alpha[:, 1] # Type is Array{Int64, 1}
alpha[:, 1:2] # Type is Array{In64, 2}
julia> alpha = [1 2 3; 4 5 6]
2x3 Array{Int64,2}:
 1  2  3
 4  5  6

julia> alpha[:,1]            # nope
2-element Array{Int64,1}:
 1
 4    

julia> alpha[:,1:1]          # yep
2x1 Array{Int64,2}:
 1
 4