亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python 稀疏矩陣-sparse 存儲和轉換

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

稀疏矩陣-sparsep

from scipy import sparse

稀疏矩陣的儲存形式

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

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

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

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使用兩個列表保存非零元素。data保存每行中的非零元素,rows保存非零元素所在的列。這種格式也很適合逐個添加元素,并且能快速獲取行相關的數據。

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采用三個數組row、col和data保存非零元素的信息。這三個數組的長度相同,row保存元素的行,col保存元素的列,data保存元素的值。coo_matrix不支持元素的存取和增刪,一旦創(chuàng)建之后,除了將之轉換成其它格式的矩陣,幾乎無法對其做任何操作和矩陣運算。

coo_matrix支持重復元素,即同一行列坐標可以出現(xiàn)多次,當轉換為其它格式的矩陣時,將對同一行列坐標對應的多個值進行求和。在下面的例子中,(2, 3)對應兩個值:1和10,將其轉換為ndarray數組時這兩個值加在一起,所以最終矩陣中(2, 3)坐標上的值為11。

許多稀疏矩陣的數據都是采用這種格式保存在文件中的,例如某個CSV文件中可能有這樣三列:“用戶ID,商品ID,評價值”。采用numpy.loadtxt或pandas.read_csv將數據讀入之后,可以通過coo_matrix快速將其轉換成稀疏矩陣:矩陣的每行對應一位用戶,每列對應一件商品,而元素值為用戶對商品的評價。

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]]

個人操作中選擇,coo_matrix 選在因為涉及稀疏矩陣運算,但是如果不用其他形式存儲則復雜度太高(時間和空間)1000*1000的matrix大約話2h,也是要命了。無奈想到了Pajek軟件中數據的輸入格式三元組:

所以想到將自己的數據處理成類似的三元組!

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

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

相關文章

  • 解決pytorch GPU 計算過程中出現(xiàn)內存耗盡的問題

    解決pytorch GPU 計算過程中出現(xiàn)內存耗盡的問題

    今天小編就為大家分享一篇解決pytorch GPU 計算過程中出現(xiàn)內存耗盡的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Python系統(tǒng)監(jiān)控模塊psutil功能與經典用法分析

    Python系統(tǒng)監(jiān)控模塊psutil功能與經典用法分析

    這篇文章主要介紹了Python系統(tǒng)監(jiān)控模塊psutil功能與經典用法,簡單講述了psutil模塊的功能、原理并結合具體實例形式分析了Python使用psutil模塊針對CPU、內存、磁盤、網絡等信息的讀取相關操作技巧,需要的朋友可以參考下
    2018-05-05
  • 淺談python 里面的單下劃線與雙下劃線的區(qū)別

    淺談python 里面的單下劃線與雙下劃線的區(qū)別

    這篇文章主要介紹了淺談python 里面的單下劃線與雙下劃線的區(qū)別,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • python sort、sorted高級排序技巧

    python sort、sorted高級排序技巧

    這篇文章主要介紹了python sort、sorted高級排序技巧,本文講解了基礎排序、升序和降序、排序的穩(wěn)定性和復雜排序、cmp函數排序法等內容,需要的朋友可以參考下
    2014-11-11
  • Python類定義和類繼承詳解

    Python類定義和類繼承詳解

    這篇文章主要介紹了Python類定義和類繼承詳解,本文講解了類的私有屬性、類的方法、私有的類方法、類的專有方法、類的定義、類的單繼承、類的多繼承等內容,需要的朋友可以參考下
    2015-05-05
  • 在macOS上搭建python環(huán)境的實現(xiàn)方法

    在macOS上搭建python環(huán)境的實現(xiàn)方法

    今天小編就為大家分享一篇在macOS上搭建python環(huán)境的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Python使用Pandas對csv文件進行數據處理的方法

    Python使用Pandas對csv文件進行數據處理的方法

    這篇文章主要介紹了Python使用Pandas對csv文件進行數據處理的方法,本文通過實例代碼相結合給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-08-08
  • python 字符串split的用法分享

    python 字符串split的用法分享

    python 字符串的split方法是用的頻率還是比較多的。比如我們需要存儲一個很長的數據,并且按照有結構的方法存儲,方便以后取數據進行處理。當然可以用json的形式。但是也可以把數據存儲到一個字段里面,然后有某種標示符來分割
    2013-03-03
  • Python開啟線程,在函數中開線程的實例

    Python開啟線程,在函數中開線程的實例

    今天小編就為大家分享一篇Python開啟線程,在函數中開線程的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • Python列表推導式、字典推導式與集合推導式用法實例分析

    Python列表推導式、字典推導式與集合推導式用法實例分析

    這篇文章主要介紹了Python列表推導式、字典推導式與集合推導式用法,結合實例形式分析了Python三種推導式的概念、使用方法及相關注意事項,需要的朋友可以參考下
    2018-02-02

最新評論