python - 如何正确地将 scipy.sparse CSR 矩阵传递给 cython 函数?

标签 python numpy scipy cython sparse-matrix

我需要将 scipy.sparse CSR 矩阵传递给 cython 函数。如何指定类型,就像指定 numpy 数组一样?

最佳答案

下面是一个示例,说明如何使用属性 rowcoldata< 从 coo_matrix 快速访问数据。该示例的目的只是展示如何声明数据类型和创建缓冲区(还添加通常会给您带来相当大提升的编译器指令)...

#cython: boundscheck=False
#cython: wraparound=False
#cython: cdivision=True
#cython: nonecheck=False

import numpy as np
from scipy.sparse import coo_matrix
cimport numpy as np

ctypedef np.int32_t cINT32
ctypedef np.double_t cDOUBLE

def print_sparse(m):
    cdef np.ndarray[cINT, ndim=1] row, col
    cdef np.ndarray[cDOUBLE, ndim=1] data
    cdef int i
    if not isinstance(m, coo_matrix):
        m = coo_matrix(m)
    row = m.row.astype(np.int32)
    col = m.col.astype(np.int32)
    data = m.data.astype(np.float64)
    for i in range(np.shape(data)[0]):
        print row[i], col[i], data[i]

关于python - 如何正确地将 scipy.sparse CSR 矩阵传递给 cython 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25295159/

相关文章:

scipy.optimize.linprog 似乎解决了任务但没有返回 x?

python - 着色 Voronoi 图

python - 派生类在 PySide (Qt/PyQt) 的错误线程中接收信号

python - 使用python将 Artifactory 上传到 Artifactory

python - 对未知公式的数据集进行曲线拟合 (SciPy)

Python:二进制掩码中从索引到1的距离

python - 预分配 NumPy 数组的首选方法是什么?

python - 使用 scipy 最小化多变量函数。导数未知

python - Django:将错误发送给管理员并将响应返回给用户

python - 使用 scrapy 版本 0.22.1 进行多页抓取 - "cannot import name CrawlSpider"错误是什么意思?