python 畫風場 scipy_Python數據分析及可視化實例之Scipy

強大到沒有朋友的科學計算庫,不知道怎么介紹ta!

大牛張若愚出了厚本的《Python 科學計算》第二版

里面包羅萬象,就不做搬運工了,盡快開工pandas。

來一彈在NLP自然語言處理中用到的稀疏矩陣處理:

# coding: utf-8

# # 稀疏矩陣

# `Scipy` 提供了稀疏矩陣的支持(`scipy.sparse`)。

#

# 稀疏矩陣主要使用 位置 + 值 的方法來存儲矩陣的非零元素,根據存儲和使用方式的不同,有如下幾種類型的稀疏矩陣:

#

# 類型|描述

# ---|----

# `bsr_matrix(arg1[, shape, dtype, copy, blocksize])`| Block Sparse Row matrix

# `coo_matrix(arg1[, shape, dtype, copy])`| A sparse matrix in COOrdinate format.

# `csc_matrix(arg1[, shape, dtype, copy])`| Compressed Sparse Column matrix

# `csr_matrix(arg1[, shape, dtype, copy])`| Compressed Sparse Row matrix

# `dia_matrix(arg1[, shape, dtype, copy])`| Sparse matrix with DIAgonal storage

# `dok_matrix(arg1[, shape, dtype, copy])`| Dictionary Of Keys based sparse matrix.

# `lil_matrix(arg1[, shape, dtype, copy])`| Row-based linked list sparse matrix

#

# 在這些存儲格式中:

#

# - COO 格式在構建矩陣時比較高效

# - CSC 和 CSR 格式在乘法計算時比較高效

# ## 構建稀疏矩陣

# In[1]:

from scipy.sparse import *

import numpy as np

# 創建一個空的稀疏矩陣:

# In[2]:

coo_matrix((2,3))

# 也可以使用一個已有的矩陣或數組或列表中創建新矩陣:

# In[4]:

A = coo_matrix([[1,2,0],[0,0,3],[4,0,5]])

print(A)

# 不同格式的稀疏矩陣可以相互轉化:

# In[5]:

type(A)

# In[6]:

B = A.tocsr()

type(B)

# 可以轉化為普通矩陣:

# In[7]:

C = A.todense()

C

# 與向量的乘法:

# In[8]:

v = np.array([1,0,-1])

A.dot(v)

# 還可以傳入一個 `(data, (row, col))` 的元組來構建稀疏矩陣:

# In[9]:

I = np.array([0,3,1,0])

J = np.array([0,3,1,2])

V = np.array([4,5,7,9])

A = coo_matrix((V,(I,J)),shape=(4,4))

# In[11]:

print(A)

# COO 格式的稀疏矩陣在構建的時候只是簡單的將坐標和值加到后面,對于重復的坐標不進行處理:

# In[13]:

I = np.array([0,0,1,3,1,0,0])

J = np.array([0,2,1,3,1,0,0])

V = np.array([1,1,1,1,1,1,1])

B = coo_matrix((V,(I,J)),shape=(4,4))

print(B)

# 轉換成 CSR 格式會自動將相同坐標的值合并:

# In[15]:

C = B.tocsr()

print(C)

# ## 求解微分方程

# In[16]:

from scipy.sparse import lil_matrix

from scipy.sparse.linalg import spsolve

from numpy.linalg import solve, norm

from numpy.random import rand

# 構建 `1000 x 1000` 的稀疏矩陣:

# In[17]:

A = lil_matrix((1000, 1000))

A[0, :100] = rand(100)

A[1, 100:200] = A[0, :100]

A.setdiag(rand(1000))

# 轉化為 CSR 之后,用 `spsolve` 求解 $Ax=b$:

# In[18]:

A = A.tocsr()

b = rand(1000)

x = spsolve(A, b)

# 轉化成正常數組之后求解:

# In[19]:

x_ = solve(A.toarray(), b)

# 查看誤差:

# In[20]:

err = norm(x-x_)

err

# ## sparse.find 函數

# 返回一個三元組,表示稀疏矩陣中非零元素的 `(row, col, value)`:

# In[22]:

from scipy import sparse

row, col, val = sparse.find(C)

print(row, col, val)

# ## sparse.issparse 函數

# 查看一個對象是否為稀疏矩陣:

# In[23]:

sparse.issparse(B)

# 或者

# In[24]:

sparse.isspmatrix(B.todense())

# 還可以查詢是否為指定格式的稀疏矩陣:

# In[25]:

sparse.isspmatrix_coo(B)

# In[26]:

sparse.isspmatrix_csr(B)

膠水語言博大精深,

本主只得一二為新人帶路,

新手可查閱歷史目錄:yeayee:Python數據分析及可視化實例目錄?zhuanlan.zhihu.com

最后,別只收藏不關注哈

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/446063.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/446063.shtml
英文地址,請注明出處:http://en.pswp.cn/news/446063.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux加密框架 crypto 算法管理 - 應用角度講解加密框架的運行流程

參考鏈接 Linux加密框架的應用示例(一)_家有一希的博客-CSDN博客 本文大綱 本節將從應用角度說明加密框架的運行流程,包括加密框架如何管理算法、如何動態創建算法,應用模塊如何創建算法實例、如何通過算法實例調用算法接口等。…

java 累進計費率計算_設計費400萬,繳納所得稅100萬,如何籌劃

很多公司老板都會把利潤放在第一位,照理說這是沒錯的,公司要盈利才能繼續經營下去。我國有很多針對小微企業的政策,盈利不高的情況下,基本不會去考慮納稅問題,也沒有多少稅收壓力。但是對一些暴利的服務型行業、軟件設…

linux加密框架 crypto 算法管理 - 哈希算法應用實例

參考鏈接 Linux加密框架應用示例(二)_家有一希的博客-CSDN博客linux加密框架 crypto 算法管理 - 應用角度講解加密框架的運行流程_CHYabc123456hh的博客-CSDN博客 在應用模塊中創建并初始化哈希算法實例 假設某個SA配置使用的認證算法為"hmac(md5…

guido python正式發布年份_Python語言適合哪些領域的計算問題? (1.3分)_學小易找答案...

【單選題】關于Python中的復數,下列說法錯誤的是 (1.3分)【多選題】藥物作用的基本規律包括?【單選題】Python 中,以下哪個賦值操作符是錯誤的? (1.3分)【單選題】哪個選項是下面代碼的執行結果? s "abcd1234" print ( s . find ( "cd" )) (1.3分)【填…

Linux加密框架 crypto crypto_larval | crypto_larval_alloc | __crypto_register_alg 介紹

參考鏈接 Lniux加密框架中的主要數據結構(五)_家有一希的博客-CSDN博客crypto_larval struct crypto_larval {struct crypto_alg alg;struct crypto_alg *adult;struct completion completion;u32 mask; };結構體名叫 crypto_larval (算法幼…

好玩的腳本代碼大全_Github | 推薦一個Python腳本集合項目

點擊上方"藍字"關注我們Python大數據分析記錄 分享 成長用python寫小腳本是一件好玩的事情,因為不是個大活兒,而且能解決眼邊前十分繁瑣的事情,這種輕松且便宜的代碼頗受人民群眾的歡迎~有點生活小妙招的意味大家較為熟知的腳本…

linux加密框架 crypto 算法管理 - 算法查找接口

參考鏈接 Linux加密框架的算法管理(二)_家有一希的博客-CSDN博客linux加密框架 crypto 算法管理 - 算法查找接口 crypto_find_alg_CHYabc123456hh的博客-CSDN博客linux加密框架 crypto 算法管理 - 算法查找接口 crypto_alg_mod_lookup_CHYabc123456hh的…

python中以下關于列表描述錯誤的_10. 以下關于列表操作的描述,錯誤的是:_學小易找答案...

【單選題】Python 語句 a1211.21 print(type(a)) 的輸出結果為( )【單選題】Python語句序列"s1 [4, 5, 6]; s2 s1; s1[1]0; print(s2)"的運行結果是( )。【填空題】Python語句print(%d%%%d%(3/2, 3%2))的運行結果是( 1 )。【單選題】python語句print(type(123))的數…

寫論文注意事項

參考鏈接 給研究生修改了一篇論文后,該985博導幾近崩潰…… 重點分析 摘要與結論幾乎重合 這一條是我見過研究生論文中最常出現的事情,很多情況下,他們論文中摘要部分與結論部分重復率超過70%。對于摘要而言,首先要用一小句話引…

xml模糊查詢語句_2Mybatis學習筆記07:動態SQL語句(原創,轉載請注明來源)

開發環境:硬件環境:Windows10JDK 1.8; 軟件環境:JavaEclipseMybatismaven3.6tomcat8.0Postgresql 10.6; 用到的jar包: asm-3.3.1.jar cglib-2.2.2.jar commons-logging-1.1.1.jar javassist-3.17.1-GA.jar …

硬件密碼組件的硬件結構、作用及實現應用設計

引 言 1 硬件密碼組件的概念 密碼技術是解決信息安全問題的核心技術。要實現信息的保密性、完整性、可控性和不可否認性等安全要求,都離不開密碼技術的運用。在具體的信息安全系統中,密碼技術的運用可以基于軟件密碼組件(簡稱為SCM&#xf…

sql倒序查詢語句_SQL丨1.基本查詢語句復習

此為自用查詢語句1.selectSELECT column1,column2 FROM table1;常用的格式慣例:大寫了SELECT和FROM,而將表名和列名小寫;通常在列名中使用下劃線,避免使用空格;在每個語句末尾添加分號;SQL不區分大小寫。2.…

基于區塊鏈的檔案共享 項目啟動

注意事項 已經備份了一個配置fabric的完整ubuntu系統,其需要注意的細節如下1,此鏡像系統需要配置host文件,sudo vim /etc/hosts,添加如下內容127.0.0.1 orderer.example.com peer0.org1.example.com peer1.org1.example.c…

知道一點怎么設直線方程_【初中數學】反比例函數策略(二) ——構造方程法...

【相關閱讀】【初中數學】反比例函數策略之一 ——數形結合反比例函數策略(二)——構造方程法(王 橋)上一次,咱們探討了解決反比例函數的策略一——數形結合,本節課我們繼續反比例函數的策略(二)——構造方程法。構造方程法,在《春季攻勢》第…

音視頻處理 C語言編譯器

命令 gcc/clang -g -O2 -o test test.c -I ... -L ... -lgcc Linux環境下的命令;clang是MAC環境下的執行命令-g 輸出文件中的調試信息-O 對輸出文件進行指令優化-o 輸出文件,可執行文件-I 指定頭文件,大寫的i 從-I 開始 是鏈接內容&#x…

wpf將文字轉化為圖形_將創新轉化為實際應用

Worldsensing是全球公認的物聯網先驅。這家位于西班牙巴塞羅那的技術供應商成立于2008年,為城市和傳統行業提供運營情報。伊格納西維拉霍薩納(IgnasiVilajosana)是公司聯合創始人兼首席執行官。伊格納西擁有西班牙巴塞羅那大學物理學博士學位,還接受過美…

音視頻處理 FFmpeg相關內容介紹 以及八大

FFmpeg的介紹 FFmpeg由Fabrice Bellard于2000年創建,由C和匯編語言進行開發FF -> Fast Forward 快進mpeg -> 標準化組織 Moving Pictures Experts Group使用到FFmpeg的開源項目gstreamer: a framework for streaming mediachromiummpv: Command line video pl…

python開發wince軟件_Wince6.0應用開發:二、模擬器的使用

上一篇我們只是搭建我們的開發平臺,那么下面我們結合之前安裝的Wince6.0模擬器進行簡單的開發,來了解一個操作流程一直寫的東西都是很直白的,(*^__^*) 嘻嘻……一、連接上我們的模擬器1、打開vs2008,選擇工具---->設備仿真器管…

python預測股票價格tushare_用tushare對股票進行簡單分析

用tushare對股票進行簡單分析(僅供交流學習)import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport tushare as ts#使用tushare 獲取每只股票的行情數據df ts.get_k_data(‘600519’,start‘2008-01-01’)print(type(df))df.to_csv(‘600519.csv’)df …

音視頻處理 基礎開發 語言基礎

基礎開發內容 Vim編譯器C語言回顧,重點介紹指針的概念Linux/MAC C語言的編譯和調試Linux/MAC 常用開發工具介紹 Vim編譯器 命令模式 拷貝 刪除 粘貼等,通過i / a 等切換到編輯模式編輯模式 編輯字符,通過ESC進行切換常用命令 創建文件 vim …