在Julia中,如何初始化一个二维数组(矩阵),其中每个元素都是列向量?



使用Julia 1.7.3版本,我的理解是,下面将matrix初始化为一个9 × 9的矩阵,其每个元素都是未定义的…

matrix = Array{Char}( undef, 9, 9 )
println( matrix )
display( matrix )
println( )
println( typeof(matrix) )
println( size(matrix) )

另外,我理解表达式[ c for c = '1' : '9' ]计算为9个字符的列向量(类型Vector{Char})。


如何将上述组合以创建一个9 × 9矩阵,其中每个矩阵的81个元素是列向量[ '1'; '2'; '3'; '4'; '5'; '6'; '7'; '8'; '9' ] ?(我的期望是在我计划编写的程序中修改每个列向量元素。)到目前为止,我最好的猜测是……

matrix = Array{Vector{Char}}( [ c for c = '1' : '9' ], 9, 9 )

尝试这样做会导致…

ERROR: LoadError: MethodError: no method matching (Array{Vector{Char}})(::Vector{Char}, ::Int64, ::Int64)


julia> [[ c for c = '1':'9' ] for _ in 1:9, _ in 1:9]
9×9 Matrix{Vector{Char}}:
['1', '2', '3', '4', '5', '6', '7', '8', '9']  …  ['1', '2', '3', '4', '5', '6', '7', '8', '9']
['1', '2', '3', '4', '5', '6', '7', '8', '9']     ['1', '2', '3', '4', '5', '6', '7', '8', '9']
['1', '2', '3', '4', '5', '6', '7', '8', '9']     ['1', '2', '3', '4', '5', '6', '7', '8', '9']
['1', '2', '3', '4', '5', '6', '7', '8', '9']     ['1', '2', '3', '4', '5', '6', '7', '8', '9']
['1', '2', '3', '4', '5', '6', '7', '8', '9']     ['1', '2', '3', '4', '5', '6', '7', '8', '9']
['1', '2', '3', '4', '5', '6', '7', '8', '9']  …  ['1', '2', '3', '4', '5', '6', '7', '8', '9']
['1', '2', '3', '4', '5', '6', '7', '8', '9']     ['1', '2', '3', '4', '5', '6', '7', '8', '9']
['1', '2', '3', '4', '5', '6', '7', '8', '9']     ['1', '2', '3', '4', '5', '6', '7', '8', '9']
['1', '2', '3', '4', '5', '6', '7', '8', '9']     ['1', '2', '3', '4', '5', '6', '7', '8', '9']

注意Arrays可以是多维的(超过2),所以三维数组也是一个选项。只需要一个小的改变:[ c for c = '1' : '9', _ in 1:9, _ in 1:9]

这是你想要的吗?

julia> repeat('1':'9', inner=(1, 9))
9×9 Matrix{Char}:
'1'  '1'  '1'  '1'  '1'  '1'  '1'  '1'  '1'
'2'  '2'  '2'  '2'  '2'  '2'  '2'  '2'  '2'
'3'  '3'  '3'  '3'  '3'  '3'  '3'  '3'  '3'
'4'  '4'  '4'  '4'  '4'  '4'  '4'  '4'  '4'
'5'  '5'  '5'  '5'  '5'  '5'  '5'  '5'  '5'
'6'  '6'  '6'  '6'  '6'  '6'  '6'  '6'  '6'
'7'  '7'  '7'  '7'  '7'  '7'  '7'  '7'  '7'
'8'  '8'  '8'  '8'  '8'  '8'  '8'  '8'  '8'
'9'  '9'  '9'  '9'  '9'  '9'  '9'  '9'  '9'

julia> [c for c in '1':'9', _ in 1:9]
9×9 Matrix{Char}:
'1'  '1'  '1'  '1'  '1'  '1'  '1'  '1'  '1'
'2'  '2'  '2'  '2'  '2'  '2'  '2'  '2'  '2'
'3'  '3'  '3'  '3'  '3'  '3'  '3'  '3'  '3'
'4'  '4'  '4'  '4'  '4'  '4'  '4'  '4'  '4'
'5'  '5'  '5'  '5'  '5'  '5'  '5'  '5'  '5'
'6'  '6'  '6'  '6'  '6'  '6'  '6'  '6'  '6'
'7'  '7'  '7'  '7'  '7'  '7'  '7'  '7'  '7'
'8'  '8'  '8'  '8'  '8'  '8'  '8'  '8'  '8'
'9'  '9'  '9'  '9'  '9'  '9'  '9'  '9'  '9'