精华内容
下载资源
问答
  • numpy 稀疏矩阵

    千次阅读 2020-01-02 16:23:31
    python 稀疏矩阵 稀疏矩阵介绍 稀疏矩阵是指矩阵中除了少量的非零元素,其余都是零的矩阵。 稀疏矩阵一般的维度都比较大,如果直接用二维矩阵来表示的话,会造成内存溢出,或者计算缓慢的缺点。一般将稀疏矩阵进行...

    python 稀疏矩阵

    稀疏矩阵介绍

    稀疏矩阵是指矩阵中除了少量的非零元素,其余都是零的矩阵。

    稀疏矩阵一般的维度都比较大,如果直接用二维矩阵来表示的话,会造成内存溢出,或者计算缓慢的缺点。一般将稀疏矩阵进行压缩,将矩阵中的非0元素进行存储在一维向量中,并用位置偏移向量来说明非零元素的相对位置。这样既不会造成内存浪费,而且提高了计算效率。

    常见的,在特征工程中,进行one-hot编码时会产生稀疏矩阵,因此需要对稀疏矩阵有所了解。

    python的Scipy.sparse模块提供了许多来自于稀疏矩阵的不同存储格式。这里仅描述最为重要的格式CSR、CSC和LIL。CSR、CSC是用于矩阵-矩阵和矩阵-向量运算的有效格式,LIL格式用于生成和更改稀疏矩阵。Python不能自动创建稀疏矩阵,所以要用scipy中特殊的命令来得到稀疏矩阵。

    csr矩阵介绍:

    压缩稀疏行(CSR,Compressed Sparse Row):或csr_matrix 按行对矩阵进行压缩的。

    CSR使用了三个数组,分别为数值、行偏移(表示某一行的第一个元素在数值里面的起始偏移位置,在行偏移的最后补上矩阵总的元素个数)、列号。CSR是一种编码的方式

    **一维数组data(数值)😗*有序地存储了所有的非零值。

    一维数组indptr(行偏移量):非量元素的行索引index

    一维数组Indices(列号:): 非零元素的列索引index

    代码1:如何创建稀疏矩阵?

    from pandas import SparseDataFrame
    
    from scipy.sparse import csr_matrix
    
    import numpy as np
    
    if __name__ == '__main__': 
        row = np.array([0, 0, 1, 2, 2, 2])
        col = np.array([0, 2, 2, 0, 1, 2])
        data = np.array([1, 2, 3, 4, 5, 6])
        a = csr_matrix((data, (row, col)), shape=(3, 3)).toarray()
        print(a)
        
    ----------------------result-------------------
       
     [[1 0 2]
     [0 0 3]
     [4 5 6]]
        
    

    代码2:如何将稀疏矩阵转化为稠密矩阵?

    import numpy as np
    from sklearn.preprocessing import OneHotEncoder
    
    province_ids_1 = np.array([["Henan","Hebei","Yunnan","Hunan"]])
    province_ids_2 = np.array([["Shanghai","Beijing","Shandong","Gunagxi"]])
    province_ids = np.concatenate((province_ids_1, province_ids_2), axis = 1) #行拼接
    province_ids = province_ids.reshape(-1,1)
    province_ids_enc = OneHotEncoder(categories='auto', handle_unknown='ignore')
    province_ids_enc.fit(province_ids)
    
    train_arr = [["Henan"], ["Hebei"], ["Beijing"], ["Guangxi"]]
    print(province_ids_enc)
    train_rs = province_ids_enc.transform(train_arr)
    
    print(train_rs)
    print(type(train_rs))
    print("*"*30)
    
    train_rs = province_ids_enc.transform(train_arr).toarray()
    print(train_rs)
    print(type(train_rs))
    ------------------------result-------------------------------
    OneHotEncoder(categories='auto', drop=None, dtype=<class 'numpy.float64'>,
                  handle_unknown='ignore', sparse=True)
      (0, 3)	1.0
      (1, 2)	1.0
      (2, 0)	1.0
    <class 'scipy.sparse.csr.csr_matrix'>
    ******************************
    [[0. 0. 0. 1. 0. 0. 0. 0.]
     [0. 0. 1. 0. 0. 0. 0. 0.]
     [1. 0. 0. 0. 0. 0. 0. 0.]
     [0. 0. 0. 0. 0. 0. 0. 0.]]
    <class 'numpy.ndarray'>
    
    展开全文
  • 我有一个Sqlite数据库,其中包含以下类型的架构:termcount(doc_num, term , count)该表包含术语及其在文档中的各自计数。喜欢(doc1 , term1 ,12...我如何使用numpy稀疏矩阵创建密集矩阵,因为我必须使用余弦相似度...

    我有一个Sqlite数据库,其中包含以下类型的架构:

    termcount(doc_num, term , count)

    该表包含术语及其在文档中的各自计数。

    喜欢

    (doc1 , term1 ,12)

    (doc1, term 22, 2)

    .

    .

    (docn,term1 , 10)

    该矩阵可以被视为稀疏矩阵,因为每个文档都包含很少的具有非零值的项。

    我如何使用numpy从稀疏矩阵创建密集矩阵,因为我必须使用余弦相似度来计算文档之间的相似度。

    这个密集的矩阵看起来像一个表格,第一列为docid,所有术语将列为第一行,其余单元格将包含计数。

    参考方案

    from scipy.sparse import csr_matrix

    A = csr_matrix([[1,0,2],[0,3,0]])

    >>>A

    <2x3 sparse matrix of type ''

    with 3 stored elements in Compressed Sparse Row format>

    >>> A.todense()

    matrix([[1, 0, 2],

    [0, 3, 0]])

    >>> A.toarray()

    array([[1, 0, 2],

    [0, 3, 0]])

    这是一个如何将稀疏矩阵转换为取自scipy的密集矩阵的示例

    Python GPU资源利用 - python

    我有一个Python脚本在某些深度学习模型上运行推理。有什么办法可以找出GPU资源的利用率水平?例如,使用着色器,float16乘法器等。我似乎在网上找不到太多有关这些GPU资源的文档。谢谢! 参考方案 您可以尝试在像Renderdoc这样的GPU分析器中运行pyxthon应用程序。它将分析您的跑步情况。您将能够获得有关已使用资源,已用缓冲区,不同渲染状态上…Python:图像处理可产生皱纹纸效果 - python

    也许很难描述我的问题。我正在寻找Python中的算法,以在带有某些文本的白色图像上创建皱纹纸效果。我的第一个尝试是在带有文字的图像上添加一些真实的皱纹纸图像(具有透明度)。看起来不错,但副作用是文本没有真正起皱。所以我正在寻找更好的解决方案,有什么想法吗?谢谢 参考方案 除了使用透明性之外,假设您有两张相同尺寸的图像,一张在皱纹纸上明亮,一张在白色背景上有深…Python uuid4,如何限制唯一字符的长度 - python

    在Python中,我正在使用uuid4()方法创建唯一的字符集。但是我找不到将其限制为10或8个字符的方法。有什么办法吗?uuid4()ffc69c1b-9d87-4c19-8dac-c09ca857e3fc谢谢。 参考方案 尝试:x = uuid4() str(x)[:8] 输出:"ffc69c1b" Is there a way to…Python sqlite3数据库已锁定 - python

    我在Windows上使用Python 3和sqlite3。我正在开发一个使用数据库存储联系人的小型应用程序。我注意到,如果应用程序被强制关闭(通过错误或通过任务管理器结束),则会收到sqlite3错误(sqlite3.OperationalError:数据库已锁定)。我想这是因为在应用程序关闭之前,我没有正确关闭数据库连接。我已经试过了: connectio…Python:如何停止多线程的numpy? - python

    我知道这似乎是一个荒谬的问题,但是我必须在与部门中其他人共享的计算服务器上定期运行作业,当我开始10个作业时,我真的希望它只占用10个核心而不是更多;我不在乎每次运行一个内核所需的时间是否更长:我只是不想让它侵犯其他人的领土,这将需要我放弃工作等等。我只想拥有10个核心,仅此而已。更具体地说,我在基于Python 2.7.3和numpy 1.6.1的Redh…

    展开全文
  • xgb_enc_1 = OneHotEncoder() xgb_enc_2 = OneHotEncoder() xgb_enc_1.fit(model_1.apply(train_gb)) ...#transform输出据真为稀疏矩阵,train_lr为numpy的稠密矩阵 temp_1 = xgb_enc_1.transf...
    xgb_enc_1 = OneHotEncoder()
    xgb_enc_2 = OneHotEncoder()
    
    xgb_enc_1.fit(model_1.apply(train_gb))
    xgb_enc_2.fit(model_2.apply(train_gb))
    #transform输出据真为稀疏矩阵,train_lr为numpy的稠密矩阵
    temp_1 = xgb_enc_1.transform(model_1.apply(train_lr))
    temp_2 = xgb_enc_2.transform(model_2.apply(train_lr))
    temp_3 = train_lr
    
    temp_1
    Out[24]: 
    <256x1624 sparse matrix of type '<class 'numpy.float64'>'
    	with 217600 stored elements in Compressed Sparse Row format>
    
    temp_2
    Out[25]: 
    <256x1977 sparse matrix of type '<class 'numpy.float64'>'
    	with 217600 stored elements in Compressed Sparse Row format>
    
    temp_3.shape
    Out[31]: (256, 14)
    

    如果直接使用np.hstack进行拼接:

    train_lr_ext_2 = np.hstack((temp_1,temp_3))
    报错:
    ValueError: all the input arrays must have same number of dimensions
    

    稀疏矩阵与稠密矩阵维度不一致,解决此问题两种方法:

    1. todense()函数
     a = temp_1.todense()
    
    train_lr_ext_2 = np.hstack((a,temp_3))
    
    train_lr_ext_2.shape
    Out[34]: (256, 1638)
    
    1. 使用scipy.saprse的hstack()函数进行拼接
    from scipy.sparse import hstack
    
    b = hstack((temp_1,temp_3))
    
    b.shape
    Out[39]: (256, 1638)
    
    展开全文
  • 当使用numpy稀疏矩阵进行合并时出现异常(对于密集(dense)矩阵没有问题)ValueError: all the input arrays must have same number of dimensions操作涉及到np.hstack((m1,m2)),np.column_stack((m1,m2)),np....

    当使用numpy对稀疏矩阵进行合并时出现异常(对于密集(dense)矩阵没有问题)

    ValueError: all the input arrays must have same number of dimensions

    操作涉及到np.hstack((m1,m2)),np.column_stack((m1,m2)),np.concatenate([m1, m2], axis=1)等

    解决方案来源于:http://www.it1352.com/239795.html

    m1 = sparse.rand(10, 10000)
    m2 = np.random.random((10, 1))
    print 'm1 shape:', m1.shape
    print 'm2 shape:', m2.shape
    print 'Stacked shape:', np.hstack((m1,m2)).shape

    异常出现

    解决方案:

        X = sparse.rand(10, 10000)
        xt = np.random.random((10, 1))
        res = sparse.hstack((X,xt)).toarray()
        print('X shape:', X.shape)
        print('xt shape:', xt.shape)
        print('Stacked shape:', res.shape)

    展开全文
  • numpy 数组生成稀疏矩阵并保存

    千次阅读 2019-12-18 03:49:26
    如果矩阵中大部分的元素都为0,被称为稀疏矩阵。用NumPy的ndarray数组保存这样的矩阵,由于很多0将很浪费内存,由于矩阵的稀疏特性,可以通过只保存非零元素的相关信息,从而节约内存的使用。此外,针对这种特殊结构...
  • 稀疏矩阵操作

    千次阅读 2017-04-28 10:41:27
    1. 合并多个稀疏矩阵横向合并: scipy.sparse.hstack 纵向合并: scipy.sparse.vstackCode Example:>>> from scipy.sparse import hstack,vstack,csc_matrix >>> import numpy as np >>> X = csc_matrix(np.arange(4...
  • 写在前面:使用sklearn.datasets的load_svmlight_file()时获取到一个稀疏矩阵,因为初涉python,不敢轻易尝试稀疏矩阵运算,打算将其转化为numpy库中的一般矩阵(matrix)。 稀疏矩阵形式: >>> print(data...
  • import numpy as np from scipy import sparse from sklearn.metrics.pairwise import cosine_similarity mat = np.random.rand(65000, 10) sparse_mat = sparse.csr_matrix(mat) similarities = cosine_similarity...
  • 尽可能地利用稀疏计算的方式,例如稀疏矩阵,或者只计算非 0 位置的值。 如果都是整数运算,可以设置 dtype=int,而非 dtype=float, 可以省下不少空间。 linux 系统下,使用 top 命令,可以很容易地看到内存(%MEM)...
  • Python学习-Scipy库稀疏矩阵的建立 稀疏矩阵指在矩阵中值为0的元素的数量远远多于非0值的矩阵 (非0元素总数/所有元素总数<=0.05) 稀疏矩阵的实现对象: csc_matrix(): 压缩面向列的稀疏矩阵 csr_matrix(): 压缩...
  • 而相应的, 对于 csr_matrix 格式的稀疏矩阵求逆, 可以用 from scipy.sparse.linalg import inv 中的 inv 求解. 但是需要注意的是, There is a sparse linalg inv, but it is just spsolve(A,I). It also warns that...
  • import numpy as np a=np.arange(9).reshape(3,3) a Out[31]: array([[0, 1, 2], [3, 4, 5], [6, 7, 8]]) 矩阵的某一行 a[1] Out[32]: array([3, 4, 5]) 矩阵的某一列 a[:,1] Out[33]: array([1, 4, 7]) b=np....
  • 感谢广东东软学院计算机系赵晨杰老师的交流。如果实(复)非奇异矩阵A能够化成正交(酉)矩阵Q与实(复)非奇异上三角矩阵R的乘积,即A=QR,则称其为A的QR分解。Python扩展库numpy...
  • pytorch操作稀疏矩阵相乘

    千次阅读 2021-01-05 15:23:48
    这是一个用pytorch操作稀疏矩阵的实例 在您需要操作很大的矩阵,例如100000100000大小,电脑存不下去的时候,可以考虑使用稀疏矩阵进行计算。注意pytorch只允许sparse和dense操作,不允许sparse和sparse相乘。在这个...
  • 本文介绍Python扩展库numpy的函数average()的用法。>>> import numpy as np# 创建二维矩阵>>> x = np.m...
  • 稀疏矩阵之python实现

    万次阅读 多人点赞 2016-09-26 11:13:53
    工程实践中,多数情况下,大矩阵一般都为稀疏矩阵,所以如何处理稀疏矩阵在实际中就非常重要。本文以python里中的实现为例,首先来探讨一下稀疏矩阵是如何存储表示的。1.sparse模块初探python中scipy模块中,有一个...
  • 稀疏矩阵

    2019-05-21 14:11:38
    在不定长文本识别中用到了稀疏矩阵 将列表数据转化为稀疏矩阵的代码如下: import numpy as np def _sparse_tuple_from(sequences, dtype=np.int32): """ 将矩阵转为稀疏矩阵存储方式 :param sequences: :...
  • python scipy 稀疏矩阵详解

    万次阅读 多人点赞 2019-08-25 16:40:38
    文章目录稀疏矩阵格式coo_matrixcsr_matrixcsc_matrixlil_matrixdok_matrixdia_matrixbsr_matrix实用函数经验总结 稀疏矩阵格式 coo_matrix   coo_matrix是最简单的稀疏矩阵存储方式,采用三元组(row, col, data)...
  • Python科学计算扩展库numpy中的广播运算 Python扩展库numpy中的布尔运算 Python获取numpy数组中最大的5个元素(保持原顺序) Python稀疏矩阵运算库scipy.sparse用法精要 Python科学计算库numpy中的add运算 使用...
  • 1.生成随机稀疏矩阵:scipy中生成随机稀疏矩阵的函数如下:scipy.sparse.rand(m,n,density,format,dtype,random_state)参数介绍: 参数 含义 m,n 整型;表示矩阵的行和列 density 实数类型;表示矩阵的稀疏度 ...
  • 稀疏矩阵-sparsep from scipy import sparse 稀疏矩阵的储存形式 在科学与工程领域中求解线性模型时经常出现许多大型的矩阵,这些矩阵中大部分的元素都为0,被称为稀疏矩阵。用NumPy的ndarray数组保存这样的矩阵,...
  • python稀疏矩阵乘法

    2018-12-04 10:51:27
    稀疏矩阵是机器学习中的重要工具。本代码为自己编写。初学者,希望大家批评指正。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,065
精华内容 4,026
关键字:

numpy稀疏矩阵操作