最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python 稀疏矩陣-sparse 存儲(chǔ)和轉(zhuǎn)換

 更新時(shí)間:2017年05月27日 11:47:20   作者:soul_mate  
這篇文章主要介紹了Python 稀疏矩陣-sparse 存儲(chǔ)和轉(zhuǎn)換的相關(guān)資料,需要的朋友可以參考下

稀疏矩陣-sparsep

from scipy import sparse

稀疏矩陣的儲(chǔ)存形式

在科學(xué)與工程領(lǐng)域中求解線性模型時(shí)經(jīng)常出現(xiàn)許多大型的矩陣,這些矩陣中大部分的元素都為0,被稱(chēng)為稀疏矩陣。用NumPy的ndarray數(shù)組保存這樣的矩陣,將很浪費(fèi)內(nèi)存,由于矩陣的稀疏特性,可以通過(guò)只保存非零元素的相關(guān)信息,從而節(jié)約內(nèi)存的使用。此外,針對(duì)這種特殊結(jié)構(gòu)的矩陣編寫(xiě)運(yùn)算函數(shù),也可以提高矩陣的運(yùn)算速度。

scipy.sparse庫(kù)中提供了多種表示稀疏矩陣的格式,每種格式都有不同的用處,其中dok_matrix和lil_matrix適合逐漸添加元素。

dok_matrix從dict繼承,它采用字典保存矩陣中不為0的元素:字典的鍵是一個(gè)保存元素(行,列)信息的元組,其對(duì)應(yīng)的值為矩陣中位于(行,列)中的元素值。顯然字典格式的稀疏矩陣很適合單個(gè)元素的添加、刪除和存取操作。通常用來(lái)逐漸添加非零元素,然后轉(zhuǎn)換成其它支持快速運(yùn)算的格式。

a = sparse.dok_matrix((10, 5))
a[2:5, 3] = 1.0, 2.0, 3.0
print a.keys()
print a.values()
[(2, 3), (3, 3), (4, 3)]
[1.0, 2.0, 3.0]

lil_matrix使用兩個(gè)列表保存非零元素。data保存每行中的非零元素,rows保存非零元素所在的列。這種格式也很適合逐個(gè)添加元素,并且能快速獲取行相關(guān)的數(shù)據(jù)。

b = sparse.lil_matrix((10, 5))
b[2, 3] = 1.0
b[3, 4] = 2.0
b[3, 2] = 3.0
print b.data
print b.rows
[[] [] [1.0] [3.0, 2.0] [] [] [] [] [] []]
[[] [] [3] [2, 4] [] [] [] [] [] []]

coo_matrix采用三個(gè)數(shù)組row、col和data保存非零元素的信息。這三個(gè)數(shù)組的長(zhǎng)度相同,row保存元素的行,col保存元素的列,data保存元素的值。coo_matrix不支持元素的存取和增刪,一旦創(chuàng)建之后,除了將之轉(zhuǎn)換成其它格式的矩陣,幾乎無(wú)法對(duì)其做任何操作和矩陣運(yùn)算。

coo_matrix支持重復(fù)元素,即同一行列坐標(biāo)可以出現(xiàn)多次,當(dāng)轉(zhuǎn)換為其它格式的矩陣時(shí),將對(duì)同一行列坐標(biāo)對(duì)應(yīng)的多個(gè)值進(jìn)行求和。在下面的例子中,(2, 3)對(duì)應(yīng)兩個(gè)值:1和10,將其轉(zhuǎn)換為ndarray數(shù)組時(shí)這兩個(gè)值加在一起,所以最終矩陣中(2, 3)坐標(biāo)上的值為11。

許多稀疏矩陣的數(shù)據(jù)都是采用這種格式保存在文件中的,例如某個(gè)CSV文件中可能有這樣三列:“用戶(hù)ID,商品ID,評(píng)價(jià)值”。采用numpy.loadtxt或pandas.read_csv將數(shù)據(jù)讀入之后,可以通過(guò)coo_matrix快速將其轉(zhuǎn)換成稀疏矩陣:矩陣的每行對(duì)應(yīng)一位用戶(hù),每列對(duì)應(yīng)一件商品,而元素值為用戶(hù)對(duì)商品的評(píng)價(jià)。

row = [2, 3, 3, 2]
col = [3, 4, 2, 3]
data = [1, 2, 3, 10]
c = sparse.coo_matrix((data, (row, col)), shape=(5, 6))
print c.col, c.row, c.data
print c.toarray()
[3 4 2 3] [2 3 3 2] [ 1 2 3 10]
[[ 0 0 0 0 0 0]
 [ 0 0 0 0 0 0]
 [ 0 0 0 11 0 0]
 [ 0 0 3 0 2 0]
 [ 0 0 0 0 0 0]]

個(gè)人操作中選擇,coo_matrix 選在因?yàn)樯婕跋∈杈仃囘\(yùn)算,但是如果不用其他形式存儲(chǔ)則復(fù)雜度太高(時(shí)間和空間)1000*1000的matrix大約話2h,也是要命了。無(wú)奈想到了Pajek軟件中數(shù)據(jù)的輸入格式三元組:

所以想到將自己的數(shù)據(jù)處理成類(lèi)似的三元組!

即“matrix矩陣”—>"tuple三元組"—>"sparseMatrix2tuple"—>"scipy.sparse"

 感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

相關(guān)文章

  • python密碼學(xué)RSA算法及秘鑰創(chuàng)建教程

    python密碼學(xué)RSA算法及秘鑰創(chuàng)建教程

    這篇文章主要為大家介紹了python密碼學(xué)RSA算法及秘鑰創(chuàng)建教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • python使用cookielib庫(kù)示例分享

    python使用cookielib庫(kù)示例分享

    Python中cookielib庫(kù)(python3中為http.cookiejar)為存儲(chǔ)和管理cookie提供客戶(hù)端支持,下面是使用示例
    2014-03-03
  • 用Python實(shí)現(xiàn)換行符轉(zhuǎn)換的腳本的教程

    用Python實(shí)現(xiàn)換行符轉(zhuǎn)換的腳本的教程

    這篇文章主要介紹了用Python實(shí)現(xiàn)換行符轉(zhuǎn)換的腳本的教程,代碼非常簡(jiǎn)單,包括一個(gè)對(duì)操作說(shuō)明的功能的實(shí)現(xiàn),需要的朋友可以參考下
    2015-04-04
  • PYQT5 vscode聯(lián)合操作qtdesigner的方法

    PYQT5 vscode聯(lián)合操作qtdesigner的方法

    這篇文章主要介紹了PYQT5 vscode聯(lián)合操作qtdesigner的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • python 中關(guān)于pycharm選擇運(yùn)行環(huán)境的問(wèn)題

    python 中關(guān)于pycharm選擇運(yùn)行環(huán)境的問(wèn)題

    這篇文章主要介紹了python 中關(guān)于pycharm選擇運(yùn)行環(huán)境的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • python中import warnings的具體作用

    python中import warnings的具體作用

    在Python開(kāi)發(fā)中,我們經(jīng)常會(huì)遇到一些警告信息,本文主要介紹了python中import warnings的具體作用,以提醒用戶(hù)潛在的問(wèn)題,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • Python利用DNN實(shí)現(xiàn)寶石識(shí)別

    Python利用DNN實(shí)現(xiàn)寶石識(shí)別

    深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Networks,簡(jiǎn)稱(chēng)DNN)是深度學(xué)習(xí)的基礎(chǔ),其結(jié)構(gòu)為input、hidden(可有多層)、output,每層均為全連接。本文將利用DNN實(shí)現(xiàn)寶石識(shí)別,感興趣的可以了解一下
    2022-01-01
  • Python列表reverse()函數(shù)使用方法詳解

    Python列表reverse()函數(shù)使用方法詳解

    這篇文章主要詳細(xì)介紹了Python列表reverse()函數(shù)使用方法,文章通過(guò)代碼示例講解的非常詳細(xì),對(duì)我們的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2023-07-07
  • python看某個(gè)模塊的版本方法

    python看某個(gè)模塊的版本方法

    今天小編就為大家分享一篇python看某個(gè)模塊的版本方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • Python中正則表達(dá)式的用法總結(jié)

    Python中正則表達(dá)式的用法總結(jié)

    今天小編就為大家分享一篇關(guān)于Python中正則表達(dá)式的用法總結(jié),小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-02-02

最新評(píng)論

泰州市| 景东| 嘉峪关市| 临沂市| 晋江市| 威远县| 高台县| 锡林郭勒盟| 鹤岗市| 江都市| 晋江市| 彩票| 鹤庆县| 万源市| 五家渠市| 玉溪市| 从化市| 姜堰市| 清镇市| 通辽市| 五指山市| 永修县| 邓州市| 晋城| 鄂州市| 乌兰察布市| 北宁市| 蕲春县| 娱乐| 长兴县| 从化市| 芷江| 松潘县| 永定县| 那曲县| 霍林郭勒市| 北海市| 定结县| 班玛县| 台中市| 鄂托克前旗|