numpy的ndarray
类被定义为
class ndarray(__builtin__.objects)
根据我的收集,__builtin__.objects
不是可迭代的类型?出于这个原因,我发现这种行为令人惊讶:
Arr = numpy.array('As Far As I Know'.split())
=> array(['As', 'Far', 'As', 'I', 'Know'], dtype='|S4')
print map(lambda x: x[0],Arr)
=> ['A', 'F', 'A', 'I', 'K']
或者这是否来自传递给list
的{{1}}方法的(__init__
)对象的属性?但是,为什么我不能在数组对象上使用像ndarray
这样的方法,如果它在内部存储为列表?
(作为一方,没有人知道在list.reverse
个对象的每个元素上应用字符串操作的更好方法吗?)
答案 0 :(得分:6)
numpy.ndarray
定义__iter__()
,这是使类型的实例可迭代的通常(且唯一)机制。请注意,numpy.ndarray
是C扩展类型,但这对于它可迭代的问题无关紧要。您在Python和C扩展类型中定义的两种类型都可以通过定义__iter__()
来迭代。