数组
构造函数与类型
Core.AbstractArrayBase.AbstractVectorBase.AbstractMatrixBase.AbstractVecOrMatCore.ArrayCore.Array(::UndefInitializer, ::Any)Core.Array(::Nothing, ::Any)Core.Array(::Missing, ::Any)Core.UndefInitializerCore.undefBase.VectorBase.Vector(::UndefInitializer, ::Any)Base.Vector(::Nothing, ::Any)Base.Vector(::Missing, ::Any)Base.MatrixBase.Matrix(::UndefInitializer, ::Any, ::Any)Base.Matrix(::Nothing, ::Any, ::Any)Base.Matrix(::Missing, ::Any, ::Any)Base.VecOrMatCore.DenseArrayBase.DenseVectorBase.DenseMatrixBase.DenseVecOrMatBase.StridedArrayBase.StridedVectorBase.StridedMatrixBase.StridedVecOrMatBase.getindex(::Type, ::Any...)Base.zerosBase.onesBase.BitArrayBase.BitArray(::UndefInitializer, ::Integer...)Base.BitArray(::Any)Base.truesBase.falsesBase.fillBase.fill!Base.emptyBase.similar
基础函数
Base.ndimsBase.sizeBase.axes(::Any)Base.axes(::AbstractArray, ::Any)Base.length(::AbstractArray)Base.keys(::AbstractArray)Base.eachindexBase.IndexStyleBase.IndexLinearBase.IndexCartesianBase.conj!Base.strideBase.strides
广播与矢量化
也可参照 dot syntax for vectorizing functions;
例如,f.(args...) 隐式调用 broadcast(f, args...)。
与其依赖如 sin 函数的“已矢量化”方法,你应该使用 sin.(a) 来使用broadcast来矢量化。
Base.broadcastBase.Broadcast.broadcast!Base.@__dot__
自定义类型的广播,请参照
Base.BroadcastStyleBase.Broadcast.AbstractArrayStyleBase.Broadcast.ArrayStyleBase.Broadcast.DefaultArrayStyleBase.Broadcast.broadcastableBase.Broadcast.combine_axesBase.Broadcast.combine_stylesBase.Broadcast.result_style
索引与赋值
Base.getindex(::AbstractArray, ::Any...)Base.setindex!(::AbstractArray, ::Any, ::Any...)Base.copyto!(::AbstractArray, ::CartesianIndices, ::AbstractArray, ::CartesianIndices)Base.copy!Base.isassignedBase.ColonBase.CartesianIndexBase.CartesianIndicesBase.DimsBase.LinearIndicesBase.to_indicesBase.checkboundsBase.checkindexBase.elsize
Views (SubArrays 以及其它 view 类型)
“视图”是一种表现和数组相似的数据结构(它是 AbstractArray 的子类型),但是它的底层数据实际上是另一个数组的一部分。
例如,x 是一个数组,v = @view x[1:10],则 v 表现得就像一个含有 10 个元素的数组,但是它的数据实际上是访问 x 的前 10 个元素。对视图的写入,如 v[3] = 2,直接写入了底层的数组 x (这里是修改 x[3])。
在 Julia 中,像 x[1:10] 这样的切片操作会创建一个副本。@view x[1:10] 将它变成创建一个视图。
@views 宏可以用于整个代码块(如 @views function foo() .... end 或 @views begin ... end)来将整个代码块中的切片操作变为使用视图。
如性能建议所描述的,有时候使用数据的副本更快,而有时候使用视图会更快。
Base.viewBase.@viewBase.@viewsBase.parentBase.parentindicesBase.selectdimBase.reinterpretBase.reshapeBase.dropdimsBase.vecBase.SubArray
拼接与排列
Base.catBase.vcatBase.hcatBase.hvcatBase.hvncatBase.vectBase.circshiftBase.circshift!Base.circcopy!Base.findall(::Any)Base.findall(::Function, ::Any)Base.findfirst(::Any)Base.findfirst(::Function, ::Any)Base.findlast(::Any)Base.findlast(::Function, ::Any)Base.findnext(::Any, ::Integer)Base.findnext(::Function, ::Any, ::Integer)Base.findprev(::Any, ::Integer)Base.findprev(::Function, ::Any, ::Integer)Base.permutedimsBase.permutedims!Base.PermutedDimsArrayBase.promote_shape
数组函数
Base.accumulateBase.accumulate!Base.cumprodBase.cumprod!Base.cumsumBase.cumsum!Base.diffBase.repeatBase.rot180Base.rotl90Base.rotr90Base.mapslicesBase.eachrowBase.eachcolBase.eachslice
组合学
Base.invpermBase.ispermBase.permute!(::Any, ::AbstractVector)Base.invpermute!Base.reverse(::AbstractVector; kwargs...)Base.reverseindBase.reverse!
