欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

numpy稀疏矩陣的實現(xiàn)

 更新時間:2022年08月09日 10:27:31   作者:IE06  
本文主要介紹了numpy稀疏矩陣的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

1. coo存儲方式

采用三元組(row, col, data)(或稱為ijv format)的形式來存儲矩陣中非零元素的信息。

coo_matrix的優(yōu)點:有利于稀疏格式之間的快速轉(zhuǎn)換(tobsr()、tocsr()、to_csc()、to_dia()、to_dok()、to_lil();允許重復(fù)項(格式轉(zhuǎn)換的時候自動相加);能與CSR / CSC格式的快速轉(zhuǎn)換

coo_matrix的缺點:不能直接進行算術(shù)運算,包括賦值

在這里插入圖片描述

初始化方式:

coo_matrix(D), D代表密集矩陣

賦值:

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

>>> _row  = np.array([0, 3, 1, 0])
>>> _col  = np.array([0, 3, 1, 2])
>>> _data = np.array([4, 5, 7, 9])
>>> coo = coo_matrix((_data, (_row, _col)), shape=(4, 4), dtype=np.int)
>>> coo.todense()  # 通過toarray方法轉(zhuǎn)化成密集矩陣(numpy.matrix)
>>> coo.toarray()  # 通過toarray方法轉(zhuǎn)化成密集矩陣(numpy.ndarray)
array([[4, 0, 9, 0],
       [0, 7, 0, 0],
       [0, 0, 0, 0],
       [0, 0, 0, 5]])

2. dok_matrix

? dok_matrix,即Dictionary Of Keys based sparse matrix,是一種類似于coo matrix但又基于字典的稀疏矩陣存儲方式,key由非零元素的的坐標值tuple(row, column)組成,value則代表數(shù)據(jù)值。dok matrix非常適合于增量構(gòu)建稀疏矩陣,并一旦構(gòu)建,就可以快速地轉(zhuǎn)換為coo_matrix。

>>> import numpy as np
>>> from scipy.sparse import dok_matrix

>>> np.random.seed(10)
>>> matrix = random(3, 3, format='dok', density=0.4)
>>> matrix[1, 1] = 33
>>> matrix[2, 1] = 10
>>> matrix.toarray()
array([[ 0.        ,  0.        ,  0.        ],
       [ 0.        , 33.        ,  0.        ],
       [ 0.19806286, 10.        ,  0.22479665]])
>>> dict(matrix)
{(2, 0): 0.19806286475962398, (2, 1): 10.0, (2, 2): 0.22479664553084766, (1, 1): 33.0}

>>> isinstance(matrix, dict)
True

3. csr和csc存儲方式

csr_matrix,全稱Compressed Sparse Row matrix,即按行壓縮的稀疏矩陣存儲方式,由三個一維數(shù)組indptr, indices, data組成。這種格式要求矩陣元「按行順序存儲」,「每一行中的元素可以亂序存儲」。那么對于每一行就只需要用一個指針表示該行元素的起始位置即可。indptr存儲每一行數(shù)據(jù)元素的起始位置,indices這是存儲每行中數(shù)據(jù)的列號,與data中的元素一一對應(yīng)。
csr_matrix,是按列壓縮,不再贅述

在這里插入圖片描述

csr_matrix的優(yōu)點:
高效的算術(shù)運算CSR + CSR,CSR * CSR等
高效的行切片
快速矩陣運算

csr_matrix的缺點:
列切片操作比較慢(考慮csc_matrix)
稀疏結(jié)構(gòu)的轉(zhuǎn)換比較慢(考慮lil_matrix或doc_matrix)

>>> import numpy as np
>>> from scipy.sparse import csr_matrix

>>> indptr = np.array([0, 2, 3, 6])
>>> indices = np.array([0, 2, 2, 0, 1, 2])
>>> data = np.array([1, 2, 3, 4, 5, 6])
>>> csr = csr_matrix((data, indices, indptr), shape=(3, 3)).toarray()
array([[1, 0, 2],
       [0, 0, 3],
       [4, 5, 6]])

4. lil_matrix

lil_matrix,即List of Lists format,又稱為Row-based linked list sparse matrix。它使用兩個嵌套列表存儲稀疏矩陣:data保存每行中的非零元素的值,rows保存每行非零元素所在的列號(列號是順序排序的)。
LIL matrix本身的設(shè)計是用來方便快捷構(gòu)建稀疏矩陣實例,而算術(shù)運算、矩陣運算則轉(zhuǎn)化成CSC、CSR格式再進行,構(gòu)建大型的稀疏矩陣還是推薦使用COO格式。

在這里插入圖片描述

5. dia_matrix

? dia_matrix,全稱Sparse matrix with DIAgonal storage,是一種對角線的存儲方式。如下圖中,將稀疏矩陣使用offsets和data兩個矩陣來表示。

在這里插入圖片描述

>>> data = np.arange(15).reshape(3, -1) + 1
>>> offsets = np.array([0, -3, 2])
>>> dia = sparse.dia_matrix((data, offsets), shape=(7, 5))
>>> dia.toarray()
array([[ 1,  0, 13,  0,  0],
       [ 0,  2,  0, 14,  0],
       [ 0,  0,  3,  0, 15],
       [ 6,  0,  0,  4,  0],
       [ 0,  7,  0,  0,  5],
       [ 0,  0,  8,  0,  0],
       [ 0,  0,  0,  9,  0]])

6. 稀疏矩陣經(jīng)驗

要有效地構(gòu)造矩陣,請使用dok_matrix或lil_matrix
lil_matrix類支持基本切片和花式索引,其語法與NumPy Array類似;lil_matrix形式是基于row的,因此能夠很高效的轉(zhuǎn)為csr,但是轉(zhuǎn)為csc效率相對較低。
要執(zhí)行乘法或轉(zhuǎn)置等操作,首先將矩陣轉(zhuǎn)換為CSC或CSR格式,效率高
CSR格式特別適用于快速矩陣矢量產(chǎn)品
CSR,CSC和COO格式之間的所有轉(zhuǎn)換都是線性復(fù)雜度。

到此這篇關(guān)于numpy稀疏矩陣的實現(xiàn)的文章就介紹到這了,更多相關(guān)numpy 稀疏矩陣內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python制作websocket服務(wù)器實例分享

    python制作websocket服務(wù)器實例分享

    websocket是一個瀏覽器和服務(wù)器通信的新的協(xié)議,websocket則和一般的socket一樣,使得瀏覽器和服務(wù)器建立了一個雙工的通道。今天我們就來詳細探討下使用Python實現(xiàn)websocket服務(wù)器的具體方法
    2016-11-11
  • 基于Pydantic封裝的通用模型在API請求驗證中的應(yīng)用詳解

    基于Pydantic封裝的通用模型在API請求驗證中的應(yīng)用詳解

    這篇文章主要介紹了基于Pydantic封裝的通用模型在API請求驗證中的應(yīng)用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪
    2023-05-05
  • 淺析Python中壓縮zipfile與解壓縮tarfile模塊的使用

    淺析Python中壓縮zipfile與解壓縮tarfile模塊的使用

    Python?提供了兩個標準庫模塊來處理文件的壓縮和解壓縮操作:zipfile和tarfile,本文將分享?這兩個模塊的使用方法,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-10-10
  • 從入門到精通:Python項目打包與setup.py實戰(zhàn)指南

    從入門到精通:Python項目打包與setup.py實戰(zhàn)指南

    想要將你的Python項目分享給世界嗎?本指南將帶你從零開始,一步步學(xué)習(xí)如何打包你的Python項目,并創(chuàng)建一個專業(yè)的setup.py文件,我們將分享實用的技巧和最佳實踐,幫助你的項目在Python社區(qū)中脫穎而出,跟著我們的步伐,讓你的項目打包變得輕松有趣!
    2024-03-03
  • Linux下Python安裝完成后使用pip命令的詳細教程

    Linux下Python安裝完成后使用pip命令的詳細教程

    這篇文章主要介紹了Linux下Python安裝完成后使用pip命令的詳細教程,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-11-11
  • python實現(xiàn)半自動化發(fā)送微信信息

    python實現(xiàn)半自動化發(fā)送微信信息

    這篇文章主要為大家詳細介紹了python實現(xiàn)半自動化發(fā)送微信信息,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • python+pytest自動化測試函數(shù)測試類測試方法的封裝

    python+pytest自動化測試函數(shù)測試類測試方法的封裝

    這篇文章主要介紹了python+pytest自動化測試函數(shù)測試類測試方法的封裝,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-06-06
  • Python代碼實現(xiàn)http/https代理服務(wù)器的腳本

    Python代碼實現(xiàn)http/https代理服務(wù)器的腳本

    這篇文章主要介紹了Python代碼做出http/https代理服務(wù)器,啟動即可做http https透明代理使用,通過幾百行代碼做出http/https代理服務(wù)器代碼片段,需要的朋友可以參考下
    2019-08-08
  • python實現(xiàn)滑雪游戲

    python實現(xiàn)滑雪游戲

    這篇文章主要為大家詳細介紹了python實現(xiàn)滑雪游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • python從入門到精通(DAY 2)

    python從入門到精通(DAY 2)

    本文是python從入門到精通系列文章的第二篇,主要給大家簡單講解下Python的字典復(fù)制和內(nèi)置函數(shù),非常簡單實用,需要的小伙伴可以參考下
    2015-12-12

最新評論