Инициализировать произвольный разреженный массив в Julia

Читая связанные вопросы, я обнаружил, что в julia можно инициализировать произвольный массив как

B = Array{Complex{Float64}}(undef, 0, 0)

Я хочу инициализировать нечто подобное, но хочу поместить в такой массив разреженные матрицы. Последняя конструкция в данном случае не работает.

Как я могу построить произвольный массив, содержащий разреженные массивы?

На самом деле моя проблема немного более конкретна. В каждую запись B я хочу поместить другую разреженную матрицу. Разреженные матрицы имеют фиксированные размеры, и я заранее знаю, сколько разреженных матриц я хочу поместить в B.


person user2820579    schedule 10.07.2020    source источник


Ответы (1)


B = [spzeros(2,2) for i in 1:2, j in 1:3]

Вот что вы получите:

julia> B = [spzeros(2,2) for i in 1:2, j in 1:3]
2×3 Array{SparseMatrixCSC{Float64,Int64},2}:
 2×2 SparseMatrixCSC{Float64,Int64} with 0 stored entries  2×2 SparseMatrixCSC{Float64,Int64} with 0 stored entries  2×2 SparseMatrixCSC{Float64,Int64} with 0 stored entries
 2×2 SparseMatrixCSC{Float64,Int64} with 0 stored entries  2×2 SparseMatrixCSC{Float64,Int64} with 0 stored entries  2×2 SparseMatrixCSC{Float64,Int64} with 0 stored entries

Обратите внимание, что вы не можете использовать fill для этого, потому что все элементы B будут ссылаться на один и тот же разреженный массив.

person Przemyslaw Szufel    schedule 10.07.2020