python - 使用字典查找样式访问 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
谁能帮我解决这个问题?谢谢和亲切的问候
解决方案
您将要覆盖 __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]
推荐阅读
- ios - 使用 Swift 检测设备中安装了哪些 Debian APT 存储库
- javascript - 有没有修复异步函数的方法
- javascript - 多级数组的 JSON Parse for 和 while 循环导致未定义
- pandas - 当 pd.concating 多个小计行时不保留 MultiIndex
- javascript - 将php数组移动到javascript
- html - @media 函数在此 CSS 代码中不起作用
- html - 每个对象隐藏或删除表格 HTML 中的重复数据
- svg - 无法使用 webpack encore 加载 webfonts-loader
- python - QFileDialog 在取消时崩溃
- c# - 使用 C# SDK 在 amazon s3 中获取存储桶使用的存储空间