中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Scipy稀疏矩陣bsr_array如何使用

發布時間:2023-02-22 17:01:53 來源:億速云 閱讀:92 作者:iii 欄目:開發技術

本篇內容主要講解“Scipy稀疏矩陣bsr_array如何使用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Scipy稀疏矩陣bsr_array如何使用”吧!

基本原理

bsr,即Block Sparse Row,bsr_array即塊稀疏行矩陣,顧名思義就是將稀疏矩陣分割成一個個非0的子塊,然后對這些子塊進行存儲。通過輸入維度,可以創建一個空的bsr數組,但bsr格式并不可見,需要通過toarray轉為數組,才能一窺全貌。

from scipy.sparse import bsr_array
import numpy as np
import sys
bsr = bsr_array((100, 200), dtype=np.int8)
sys.getsizeof(bsr)      # 48
bsr_arr = bsr.toarray() # 轉為數組
sys.getsizeof(bsr_arr)  # 20120

egtsizeof可查看數據占用的內存,其中bsr占用48byte,轉為數組之后占據20k,這就是稀疏矩陣存在的價值。

當然,全零的數組就直接叫全零數組得了,直接存個行列數比bsr還省事兒,接下來構造一個矩陣

from numpy.random import randint, rand
tmp = np.zeros([200,200])
for i in range(30):
    x, y = randint(195, size=(2))
    tmp[x:x+5, y:y+5]=rand(5,5)

print(tmp.size)            # 40000
bsr = bsr_array(tmp, blocksize=(5,5))    
print(bsr.data.size)       # 2850
print(bsr.indptr.size)     # 41
print(bsr.indices.size)    # 114
print(tmp.size)

bsr.data是bsr中存放的矩陣塊;bsr.indices為這些矩陣塊對應的列號數組;bsr.indptr為索引的行分割數組;這些零零碎碎加在一起也只有3005個數,和40k的tmp相比,可以說壓縮效率非常高了。

通過data, indptr和indices,可以將bsr復原為矩陣。首先,列號和數據是一一對應的;其次indptr對索引和數據按行分割。在本例中,indptr的值為0, 2, 6, 8…,則data[0:2]存放在第0行,對應的列號為indices[0:2];data[2:6]存放在第1行,對應的列號為indices[2:6],以此類推。

初始化

bsr_array共有5種初始化方案:

  • bsr_array(D) D是一個稀疏數組或2 × D 2\times D2×D數組

  • bsr_array(S) S是另一種稀疏數組

  • bsr_array((M, N),dtype) 創建一個shape為( M , N ) (M, N)(M,N)的空數組,dtype為數據類型

  • bsr_array((data, ij)) ij是坐標數組,可分解為i,j=ij,data是數據數組,設新矩陣為a,則a[i[k], j[k]] = data[k]

  • bsr_array((data, indices, indptr))

前四種方法均有參數blocksize,為塊尺寸;后兩種方法均有參數shape,為稀疏矩陣的維度。

從原理上來說,通過data, indices, indptr來創建的bsr數組,屬于"原生"的bsr數組,其創建規則就是前文提到的復原規則。

內置方法

稀疏數組在計算上并不便捷,所以bsr_array中內置了下列函數,可以高效地完成計算。



函數expm1, log1p, sqrt, pow, sign
三角函數sin, tan, arcsin, arctan, deg2rad, rad2deg
雙曲函數sinh, tanh, arcsinh, arctanh
索引getcol, getrow, nonzero, argmax, argmin, max, min
舍入ceil, floor, trunc
變換conj, conjugate, getH
統計count_nonzero, getnnz, mean, sum
矩陣diagonal, trace
獲取屬性get_shape, getformat
計算比較multiply, dot, maximum, minimum
轉換asformat, asfptype, astype, toarray, todense
轉換tobsr, tocoo, tocsc, tocsr, todia, todok, tolil
更改維度set_shape, reshape, resize, transpose
排序sort_indices, sorted_indices
移除元素eliminate_zeros, prune, sum_duplicates
其他copy, check_format, getmaxprint, rint, setdiag

到此,相信大家對“Scipy稀疏矩陣bsr_array如何使用”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

彭阳县| 青海省| 广东省| 乌审旗| 郑州市| 太白县| 达州市| 上饶市| 肥西县| 邳州市| 临漳县| 瓮安县| 宁阳县| 宣武区| 柳林县| 新宁县| 颍上县| 清涧县| 安顺市| 邻水| 岫岩| 江津市| 鹤岗市| 彝良县| 连江县| 南郑县| 镇坪县| 策勒县| 乳源| 伊吾县| 昂仁县| 桃园县| 泾源县| 隆子县| 越西县| 石城县| 启东市| 宁蒗| 永兴县| 宣化县| 定结县|