- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将一些 Julia 代码重写为 python 代码。我刚刚发现 colptr
附加到稀疏矩阵。我搜索了它,但我仍然不明白它是什么。有人可以向我提供有关它的信息和 python 3 中的对应信息吗?提前谢谢你。
[编辑]这是来自 Julia's references
struct SparseMatrixCSC{Tv,Ti<:Integer} <: AbstractSparseMatrix{Tv,Ti}
m::Int # Number of rows
n::Int # Number of columns
colptr::Vector{Ti} # Column j is in colptr[j]:(colptr[j+1]-1)
rowval::Vector{Ti} # Row indices of stored values
nzval::Vector{Tv} # Stored values, typically nonzeros
例如,A.colptr[j]
是指 CSC 矩阵 A
的第 j 列的所有元素吗?
我试图通过运行下面的一些简单代码来解决这个问题,
A = sparse([1, 1, 2, 3], [1, 3, 2, 3], [0, 1, 2, 0])
for i=1:4
println(A.colptr[i])
end
结果是
1235
我仍然不知道为什么结果会是这样。解释说
Ti is the integer type for storing column pointers
最佳答案
您正在查看矩阵的压缩稀疏列 (CSC) 表示。例如,不是在内存中按顺序存储所有矩阵的值,而是只允许存储非零值。例如矩阵
5 0 0
6 0 7
1 0 3
0 2 0
可以或者作为列主序列存储在内存中 5 6 1 0 0 0 0 2 0 7 3 0
或者你可以做一些更聪明的事情。
如果您只存储非零元素的列主序列,您最终会得到一个更短的列表:5 6 1 2 7 3
!但现在您需要一种方法将这些值映射回它们在矩阵中的位置。您需要一个列 索引和一个行 索引。因此,我们还有两个列表:
每个存储值的行索引也可以以一对一的方式存储:1 2 3 4 2 3
。
现在,我可以以类似的一对一方式存储列索引:1 1 1 2 3 3
。如果我这样做,这将是一种稀疏坐标 (COO) 格式。但请注意,这里有很多冗余信息:看看所有那些重复的值!通用 CSC 格式进一步压缩了这一点。我已经知道我有三列;我可以简单地存储每列开始的位置。这是 colptr
:它的每一列都有一个值,并且指向该列的开始位置。因此不需要存储六个值,它只需要存储三个:第一列从索引一开始(当然)。第二列从索引 4 开始,第三列从索引 5 开始。事实证明,如果我们还存储最后的第四个值,表示最后一个值,这会让生活变得更容易一些,因为这样我们就可以描述特定列中的非零值只需说 j
列中的存储值 可以在 nzval[colptr[j]:colptr[j+1]-1]
.
典型的 Python 等价物在 scipy 中:scipy.sparse.csc_matrix
;简单地替换 colptr
-> indptr
, indices
-> rowval
, nzval
-> data
并容纳从 0 开始的索引。
关于python - Julia 中的 "colptr"及其在 Python 中的对应项是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64971750/
我在 lambda 演算中通过名称类型参数化了术语表示: {-# LANGUAGE DeriveFunctor #-} data Lambda a = Var a | App (Lambda a) (
我是一名优秀的程序员,十分优秀!