首页 > 解决方案 > 使用字典查找样式访问 numpy,但保留 numpy 数组操作

问题描述

我想构造一个继承自 numpy.ndarray 的类,以便它可以作为 numpy 数组(+、-、*、/、...)进行正常操作。我唯一想改变的是我们访问数据中项目的方式。例如:

import numpy as np
from PIL import Image
class Data(np.ndarray):
    """
    Something magical here 
    """

img = np.asarray(Image.open('lena.jpg'))
data = img.view(Data)
data['Red'] #equivalent to img[:,:,0]
normalized_data = data/255. #normalize the data 

谁能帮我解决这个问题?谢谢和亲切的问候

标签: pythonnumpy

解决方案


您将要覆盖 __getitem__ 方法。这是另一个可能提供一些直觉的问题:Understanding __getitem__ method

链接到文档:https ://docs.python.org/3/reference/datamodel.html#object.__getitem__

如果你想改变你设置的值,你覆盖 __setitem__

一个例子:

def __getitem__(self, key):
    """ Controls how values are 'gotten'. """
    if key == 'red':
        return self.data[:,:,0]

推荐阅读