数组接口是另一种与其他Python应用程序通信的机制。顾名思义,该协议机制只适用于类数组(array-like)对象。接下来还是使用PIL举例,但不涉及保存文件的操作。
准备工作
我们将复用上一攻略的部分代码,因此相关的准备工作也是类似的。这里省略了对上一攻略中的第一个步骤的介绍,假定你已知道怎样用图像数据创建数组。
具体步骤
让我们开始探索数组接口的用法。
- PIL图像的数组接口属性。
PIL图像对象有一个__array_interface__
属性。属性值是一个字典对象。让我们看一下它的内容。
这段代码会打印如下信息。
- NumPy数组接口属性。
NumPy的ndarray模块也有一个__array_interface__
属性。可以使用asarray
函数把PIL图像转换为NumPy数组。
该数组的形状和数据类型是:
如你所见,数组的形状没有改变。本章的完整代码如下。
小结
数组接口(协议)使我们能够在Python的类数组对象之间共享数据。NumPy和PIL都提供了数组接口。