是否可以在Julia中重塑稀疏数组?

是否可以在Julia中重塑稀疏数组?,julia,sparse-matrix,Julia,Sparse Matrix,我试图在Julia中重塑稀疏数组,但这样做会出错。有可能吗?如果是,怎么做 一些挫折的快照: julia> A = sparse([1, 2, 3], [1, 2, 3], [1, 2, 3]) 3×3 SparseMatrixCSC{Int64,Int64} with 3 stored entries: [1, 1] = 1 [2, 2] = 2 [3, 3] = 3 julia> reshape(A, (5, 5)) ERROR: DimensionMi

我试图在Julia中重塑稀疏数组,但这样做会出错。有可能吗?如果是,怎么做

一些挫折的快照:

julia> A = sparse([1, 2, 3], [1, 2, 3], [1, 2, 3])
3×3 SparseMatrixCSC{Int64,Int64} with 3 stored entries:
  [1, 1]  =  1
  [2, 2]  =  2
  [3, 3]  =  3

julia> reshape(A, (5, 5))
ERROR: DimensionMismatch("parent has 9 elements, which is incompatible with size (5, 5)")
Stacktrace:
我还尝试了调整大小!(A,4*4),但似乎没有任何效果。同样,我们非常感谢您的帮助


编辑:我应该更清楚,我想专门调整数组的大小,以便在3x3范围之外添加更多元素(在示例代码中)。例如,
A[4,4]=1
当前不起作用。

您可以使用创建一个新的稀疏数组

julia> i, j, v = findnz(A)
([1, 2, 3], [1, 2, 3], [1, 2, 3])

julia> sparse(i, j, v, 5, 5)
5×5 SparseMatrixCSC{Int64, Int64} with 3 stored entries:
 1  ⋅  ⋅  ⋅  ⋅
 ⋅  2  ⋅  ⋅  ⋅
 ⋅  ⋅  3  ⋅  ⋅
 ⋅  ⋅  ⋅  ⋅  ⋅
 ⋅  ⋅  ⋅  ⋅  ⋅
sparse
的反方向是
findnz
,它检索用于创建稀疏数组的输入。看


(编辑,只是要注意,我的输出与您的不同,因为我在撰写本文时使用了Julia v1.6(发布候选1或
rc1
),它有一个非常酷的新
show
稀疏矩阵方法。)

当您将包含
n个
元素的矩阵重塑为包含不同数量元素的矩阵时,您希望得到什么结果?
reformate
的思想不是改变而是移动元素,例如
reformate(A,9,1)
工作我更新了我的问题,以展示我真正想要实现的目标。你看过这个吗:?
julia> J = Base.ReshapedArray(A, (4, 4), ())
4×4 reshape(::SparseMatrixCSC{Int64,Int64}, 4, 4) with eltype Int64:
 1  2    3     #undef
 0  0  #undef  #undef
 0  0  #undef  #undef
 0  0  #undef  #undef

julia> J[4, 4] = 4
ERROR: BoundsError: attempt to access 3×3 SparseMatrixCSC{Int64,Int64} at index [1, 6]
Stacktrace:
julia> i, j, v = findnz(A)
([1, 2, 3], [1, 2, 3], [1, 2, 3])

julia> sparse(i, j, v, 5, 5)
5×5 SparseMatrixCSC{Int64, Int64} with 3 stored entries:
 1  ⋅  ⋅  ⋅  ⋅
 ⋅  2  ⋅  ⋅  ⋅
 ⋅  ⋅  3  ⋅  ⋅
 ⋅  ⋅  ⋅  ⋅  ⋅
 ⋅  ⋅  ⋅  ⋅  ⋅