Julia中DenseArray的正确初始化与元素访问方法求助
问题分析
你之前的操作只是将DenseArray{Int64,10}这个类型赋值给了变量a,并没有创建实际的数组实例,所以尝试访问a[1]会触发类型转换错误——你试图把整数当作DenseArray{Int64,10}类型来处理,这显然不成立。
正确示例
在Julia中,DenseArray是抽象类型,无法直接实例化,我们需要使用它的具体子类型(比如Array)来创建带值的稠密数组,或者借助内置函数快速初始化:
方式1:用zeros创建全零数组
# 创建10维Int64类型稠密数组,每个维度长度为2,元素初始化为0 a = zeros(Int64, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2) # 访问第一个元素(需指定所有10个维度的索引) a[1,1,1,1,1,1,1,1,1,1] # 输出0 # 修改并访问某个元素 a[1,1,1,1,1,1,1,1,1,2] = 100 println(a[1,1,1,1,1,1,1,1,1,2]) # 输出100
方式2:用fill填充指定值
# 创建10维数组,每个元素初始化为5,每个维度长度为1 a = fill(5, ntuple(_->1, 10)) # 访问唯一元素(所有维度索引取1) a[1,1,1,1,1,1,1,1,1,1] # 输出5
方式3:显式构造未初始化数组后赋值
# 创建未初始化的10维Int64数组,前两个维度长度为3,其余为1 a = Array{Int64,10}(undef, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1) a[1,2,1,1,1,1,1,1,1,1] = 20 println(a[1,2,1,1,1,1,1,1,1,1]) # 输出20
注意:10维数组的索引必须指定所有10个维度的位置,不能只写a[1]——这会被解释为从类型中取元素,而非数组实例。
内容的提问来源于stack exchange,提问作者Vinod
相关产品推荐
相关产品推荐

