【发布时间】:2020-06-30 00:16:59
【问题描述】:
如何让类通过其内部 numpy 数组进行迭代: 只是想法不起作用:
class ABC:
def __init__(self):
self.ary = np.zeros(50)
def __iter__(self): return np.nditer(self.ary)
def next(self): ...??..
还有如何让分配工作:
abc = ABC()
abc[5] = 12
abc[7:9] 0
【问题讨论】:
-
你不需要定义
next。您的课程应该可以工作,所以如果它不起作用,您需要具体说明什么不起作用。 “它不起作用”不是一个充分的问题描述。要使类可迭代,您需要定义__iter__。仅当您希望您的类成为 iterator 时才定义__next__(注意,在 Python 3 中它是__next__而不是next),在这种情况下,__iter__必须返回self。我认为您不想定义迭代器,而是定义一个可迭代的。你有哪个。对于基于项目的分配,也请避免提出多个问题。 -
不要使用
nditer。正确使用太难了,而且没有任何速度优势。 -
你希望用这门课做什么?您是否考虑过对
list进行子类化? -
这是干什么用的?
标签: python numpy class iterator assign