NumPy Cookbook 带注释源码 四、连接 NumPy 与 剩余世界

简介: 版权声明:License CC BY-NC-SA 4.0 https://blog.csdn.net/wizardforcel/article/details/73087531 # ...
版权声明: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__': []}
相关文章
|
4月前
|
存储 Java API
NumPy 秘籍中文第二版:四、将 NumPy 与世界的其他地方连接
NumPy 秘籍中文第二版:四、将 NumPy 与世界的其他地方连接
49 0
|
5月前
|
存储 并行计算 数据挖掘
利用Numpy和Pandas对地铁客量数据进行实战分析(附源码)
利用Numpy和Pandas对地铁客量数据进行实战分析(附源码)
40 0
|
8月前
|
SQL 索引 Python
【NumPy 数组连接、拆分、搜索、排序】
【NumPy 数组连接、拆分、搜索、排序】
|
存储 数据可视化 数据挖掘
【Numpy】数组的创建和常用函数(排序、连接、属性、reshape、索引和切片)
【Numpy】数组的创建和常用函数(排序、连接、属性、reshape、索引和切片)
162 0
【Numpy】数组的创建和常用函数(排序、连接、属性、reshape、索引和切片)
|
机器学习/深度学习 PyTorch 算法框架/工具
【Pytorch(二)】Numpy 搭建全连接神经网络(3)
【Pytorch(二)】Numpy 搭建全连接神经网络(3)
【Pytorch(二)】Numpy 搭建全连接神经网络(3)
|
机器学习/深度学习 PyTorch Serverless
【Pytorch(二)】Numpy 搭建全连接神经网络(2)
【Pytorch(二)】Numpy 搭建全连接神经网络(2)
【Pytorch(二)】Numpy 搭建全连接神经网络(2)
|
机器学习/深度学习 人工智能 Python
NumPy Beginner's Guide 2e 带注释源码 三、熟悉 NumPy 常用函数
版权声明:License CC BY-NC-SA 4.0 https://blog.csdn.net/wizardforcel/article/details/72997953 # ...
1376 0
|
Python
NumPy Beginner's Guide 2e 带注释源码 七、NumPy 特殊例程
版权声明:License CC BY-NC-SA 4.0 https://blog.csdn.net/wizardforcel/article/details/72847091 # ...
927 0
|
Python
NumPy Beginner's Guide 2e 带注释源码 四、NumPy 便利的函数
版权声明:License CC BY-NC-SA 4.0 https://blog.csdn.net/wizardforcel/article/details/72828999 # ...
1060 0
|
Python
NumPy Beginner's Guide 2e 带注释源码 五、处理 NumPy 矩阵和 ufunc
版权声明:License CC BY-NC-SA 4.0 https://blog.csdn.net/wizardforcel/article/details/72830909 # ...
1062 0