Инициализировать произвольный разреженный массив в Julia - PullRequest
3 голосов
/ 11 июля 2020

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

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

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

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

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

1 Ответ

3 голосов
/ 11 июля 2020
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 будут ссылаться на один и тот же разреженный массив.

...