连接 NumPy 与 剩余世界

简介: 连接 NumPy 与 剩余世界# 来源:NumPy Cookbook 2e Ch4使用缓冲区协议# 协议在 Python 中相当于接口# 是一种约束import numpy as np impo...

连接 NumPy 与 剩余世界

# 来源: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__': []}
相关文章
|
存储 Java API
NumPy 秘籍中文第二版:四、将 NumPy 与世界的其他地方连接
NumPy 秘籍中文第二版:四、将 NumPy 与世界的其他地方连接
148 0
|
SQL 索引 Python
【NumPy 数组连接、拆分、搜索、排序】
【NumPy 数组连接、拆分、搜索、排序】
189 0
|
存储 数据可视化 数据挖掘
【Numpy】数组的创建和常用函数(排序、连接、属性、reshape、索引和切片)
【Numpy】数组的创建和常用函数(排序、连接、属性、reshape、索引和切片)
382 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 Cookbook 带注释源码 四、连接 NumPy 与 剩余世界
版权声明:License CC BY-NC-SA 4.0 https://blog.csdn.net/wizardforcel/article/details/73087531 # ...
988 0
|
1月前
|
存储 Java 数据处理
(numpy)Python做数据处理必备框架!(一):认识numpy;从概念层面开始学习ndarray数组:形状、数组转置、数值范围、矩阵...
Numpy是什么? numpy是Python中科学计算的基础包。 它是一个Python库,提供多维数组对象、各种派生对象(例如掩码数组和矩阵)以及用于对数组进行快速操作的各种方法,包括数学、逻辑、形状操作、排序、选择、I/0 、离散傅里叶变换、基本线性代数、基本统计运算、随机模拟等等。 Numpy能做什么? numpy的部分功能如下: ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组 用于对整组数据进行快速运算的标准数学函数(无需编写循环)。 用于读写磁盘数据的工具以及用于操作内存映射文件的工具。 线性代数、随机数生成以及傅里叶变换功能。 用于集成由C、C++
291 1
|
1月前
|
Java 数据处理 索引
(numpy)Python做数据处理必备框架!(二):ndarray切片的使用与运算;常见的ndarray函数:平方根、正余弦、自然对数、指数、幂等运算;统计函数:方差、均值、极差;比较函数...
ndarray切片 索引从0开始 索引/切片类型 描述/用法 基本索引 通过整数索引直接访问元素。 行/列切片 使用冒号:切片语法选择行或列的子集 连续切片 从起始索引到结束索引按步长切片 使用slice函数 通过slice(start,stop,strp)定义切片规则 布尔索引 通过布尔条件筛选满足条件的元素。支持逻辑运算符 &、|。
137 0
|
3月前
|
机器学习/深度学习 API 异构计算
JAX快速上手:从NumPy到GPU加速的Python高性能计算库入门教程
JAX是Google开发的高性能数值计算库,旨在解决NumPy在现代计算需求下的局限性。它不仅兼容NumPy的API,还引入了自动微分、GPU/TPU加速和即时编译(JIT)等关键功能,显著提升了计算效率。JAX适用于机器学习、科学模拟等需要大规模计算和梯度优化的场景,为Python在高性能计算领域开辟了新路径。
344 0
JAX快速上手:从NumPy到GPU加速的Python高性能计算库入门教程
|
3月前
|
存储 数据采集 数据处理
Pandas与NumPy:Python数据处理的双剑合璧
Pandas与NumPy是Python数据科学的核心工具。NumPy以高效的多维数组支持数值计算,适用于大规模矩阵运算;Pandas则提供灵活的DataFrame结构,擅长处理表格型数据与缺失值。二者在性能与功能上各具优势,协同构建现代数据分析的技术基石。
337 0

热门文章

最新文章

下一篇
oss云网关配置