当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Julia similar用法及代码示例


用法一

similar(array, [element_type=eltype(array)], [dims=size(array)])

根据给定的源数组,使用给定的元素类型和大小创建一个未初始化的可变数组。第二个和第三个参数都是可选的,默认为给定数组的 eltypesize 。维度可以指定为单个元组参数或一系列整数参数。

自定义 AbstractArray 子类型可以选择最适合返回给定元素类型和维度的特定数组类型。如果他们不专门研究此方法,则默认值为 Array{element_type}(undef, dims...)

例如,similar(1:10, 1, 4) 返回一个未初始化的 Array{Int,2},因为范围既不可变也不支持二维:

julia> similar(1:10, 1, 4)
1×4 Array{Int64,2}:
 4419743872  4374413872  4419743888  0

相反,similar(trues(10,10), 2) 返回带有两个元素的未初始化 BitVector,因为 BitArray 都是可变的并且可以支持一维数组:

julia> similar(trues(10,10), 2)
2-element BitVector:
 0
 0

由于 BitArray 只能存储 Bool 类型的元素,但是,如果您请求不同的元素类型,它将创建一个常规的 Array 代替:

julia> similar(falses(10), Float64, 2, 4)
2×4 Array{Float64,2}:
 2.18425e-314  2.18425e-314  2.18425e-314  2.18425e-314
 2.18425e-314  2.18425e-314  2.18425e-314  2.18425e-314

另请参阅: undef isassigned

用法二

similar(storagetype, axes)

创建一个未初始化的可变数组,类似于 storagetype 指定的数组,但最后一个参数指定了 axes

例子

similar(Array{Int}, axes(A))

创建一个 "acts like" 和 Array{Int} 的数组(并且可能确实有一个支持),但它的索引与 A 相同。如果 A 具有常规索引,这将与 Array{Int}(undef, size(A)) 相同,但如果 A 具有非常规索引,则结果的索引将匹配 A

similar(BitArray, (axes(A, 2),))

将创建一个一维逻辑数组,其索引与 A 的列的索引匹配。

相关用法


注:本文由纯净天空筛选整理自julialang.org 大神的英文原创作品 Base.similar — Function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。