NumPyCookbook帶註釋原始碼四、連線NumPy與剩餘世界
版權宣告:License CC BY-NC-SA 4.0 https://blog.csdn.net/wizardforcel/article/details/73087531
# 來源:NumPy Cookbook 2e Ch4
使用緩衝區協議
# 協議在 Python 中相當於介面
# 是一種約束
import numpy as np
import Image
# from PIL import Image (Python 3)
import scipy.misc
lena = scipy.misc.lena()
# Lena 是 512x512 的灰度影像
# 建立與 Lena 寬高相同的 RGBA 影像,全黑色
data = np.zeros((lena.shape[0], lena.shape[1], 4), dtype=np.int8)
# 將 data 的不透明度設定為 Lena 的灰度
data[:,:,3] = lena.copy()
# 將 data 轉成 RGBA 的影像格式,並儲存
img = Image.frombuffer("RGBA", lena.shape, data, `raw`, "RGBA", 0, 1)
img.save(`lena_frombuffer.png`)
# 每個畫素都設為 #FC0000FF (紅色)
data[:,:,3] = 255
data[:,:,0] = 222
img.save(`lena_modified.png`)
陣列協議
from __future__ import print_function
import numpy as np
import Image
import scipy.misc
# 獲取上一節的第一個影像
lena = scipy.misc.lena()
data = np.zeros((lena.shape[0], lena.shape[1], 4), dtype=np.int8)
data[:,:,3] = lena.copy()
img = Image.frombuffer("RGBA", lena.shape, data, `raw`, "RGBA", 0, 1)
# 獲取陣列介面(協議),實際上它是個字典
array_interface = img.__array_interface__
print("Keys", array_interface.keys())
print("Shape", array_interface[`shape`])
print("Typestr", array_interface[`typestr`])
```
Keys [`shape`, `data`, `typestr`]
Shape (512, 512, 4)
Typestr |u1
```
# 將影像由 PIL.Image 型別轉換回 np.array
numpy_array = np.asarray(img)
print("Shape", numpy_array.shape)
print("Data type", numpy_array.dtype)
```
Shape (512, 512, 4)
Data type uint8
```
與 Matlab 和 Octave 交換資料
# 建立 0 ~ 6 的陣列
a = np.arange(7)
# 將 a 作為 array 儲存在 a.mat 中
scipy.io.savemat("a.mat", {"array": a})
```
octave-3.4.0:2> load a.mat
octave-3.4.0:3> array
array =
0
1
...
6
```
# 還可以再讀取進來
mat = io.loadmat("a.mat")
print mat
# {`array`: array([[0, 1, 2, 3, 4, 5, 6]]), `__version__`: `1.0`, `__header__`: `MATLAB 5.0 MAT-file Platform: nt, Created on: Sun Jun 11 18:48:29 2017`, `__globals__`: []}
相關文章
- OkHttp 原始碼剖析系列(四)——連線建立概述HTTP原始碼
- 中國剩餘定理
- ServiceStack.Redis的原始碼分析(連線與連線池)Redis原始碼
- Java實現連結串列帶註釋Java
- 《四 資料庫連線池原始碼》手寫資料庫連線池資料庫原始碼
- JavaScript 剩餘運算子JavaScript
- ES6 - 函式與剩餘運算子函式
- Dubbo原始碼解析之服務釋出與註冊原始碼
- 中國剩餘定理詳解
- 中國剩餘定理(構造)
- 通俗理解這次的CPU漏洞,附帶修改過帶註釋原始碼一份原始碼
- 原始碼完全註釋:socket select原始碼
- 剩餘運算子與展開運算子的區別
- 【X開放日】連線人與世界的攝像頭——餘凱解析百度大腦
- 一張圖帶你走進Retrofit原始碼世界原始碼
- 中國剩餘定理(個人筆記)筆記
- 擴充套件中國剩餘定理套件
- mybatis原始碼解析(四)--- MapperStatement的註冊MyBatis原始碼APP
- js獲取當前月份剩餘的天數程式碼JS
- boot分割槽剩餘空間不足boot
- parted掛載硬碟剩餘空間硬碟
- hdu 1792 A New Change Problem 剩餘系
- TCP建立連線三次握手和釋放連線四次握手TCP
- 安卓第一個作品 檔案管理器 附原始碼帶詳細註釋安卓原始碼
- egis釋出了adsubstract pro 2.1註冊器,帶原始碼的。 (2千字)原始碼
- 帶註釋手動注入指令碼命令整理(轉)指令碼
- MySQL 連線工具mysql中的語句註釋方法MySql
- 二維碼生成器,連線物理與數字世界的橋樑
- 演算法題——冗餘連線演算法
- 騰訊程武:讓電競成為連線世界的新紐帶
- MOSN 原始碼解析 - 連線池原始碼
- Hikari連線池原始碼解讀原始碼
- Hibernate原始碼學習四 _服務註冊原始碼
- HashMap原始碼(JDK1.8)-手動註釋HashMap原始碼JDK
- Bootstrap的Model原始碼詳細註釋 (轉)boot原始碼
- Nginx原始碼完全註釋(6)core/murmurhashNginx原始碼
- 擴充套件中國剩餘定理詳解套件
- linux檢視剩餘磁碟空間Linux