您好,登錄后才能下訂單哦!
這篇文章主要講解了“scipy稀疏數組coo_array如何實現”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“scipy稀疏數組coo_array如何實現”吧!
coo也被稱為ijv,是一種三元組格式,對于矩陣中第i ii行第j jj列的值v vv,將其存儲為( i , j , v ) (i,j,v)(i,j,v)這樣的三元組,即為coo_array的原理。
例如
import numpy as np from scipy.sparse import coo_array row = np.array([0, 3, 1, 0]) col = np.array([0, 3, 1, 2]) data = np.array([4, 5, 7, 9]) coo_array((data, (row, col)), shape=(4, 4)).toarray() print(coo.toarray())
其輸出結果為
但需要注意一點,若行數組和列數組所對應的矩陣坐標發生了重復,那么重復位置處對應的值會累加,
row = np.array([0, 0, 1, 3, 1, 0, 0]) col = np.array([0, 2, 1, 3, 1, 0, 0]) data = np.array([1, 1, 1, 1, 1, 1, 1]) coo = coo_array((data, (row, col)), shape=(4, 4)) print(coo.toarray())
結果為
coo_array(D) D是一個稀疏數組或2 × D 2\times D2×D數組
coo_array(S) S是另一種稀疏數組
coo_array((M, N),dtype='d') 創建一個shape為( M , N ) (M, N)(M,N)的空數組,dtype為數據類型
coo_array((data, (i,j))) (i, j)是坐標數組,data是數據數組,設新矩陣為a,則a[i[k], j[k]] = data[k]
前三種比較容易理解,下面驗證一下第四種
>>> from scipy.sparse import coo_array >>> import numpy as np >>> data = np.random.rand(3) >>> x = y = np.arange(3).astype(int) >>> coo = coo_array((data,(x,y))) >>> coo.toarray() array([[0.28050236, 0. , 0. ], [0. , 0.59568482, 0. ], [0. , 0. , 0.84392724]])
稀疏數組在計算上并不便捷,所以coo_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稀疏數組coo_array如何實現”的內容了,經過本文的學習后,相信大家對scipy稀疏數組coo_array如何實現這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。