控制numpy ndarray子类中的迭代顺序

时间:2018-08-11 16:46:20

标签: python c arrays numpy jagged-arrays

我试图将一个破烂/锯齿状的数组实现为ndarray子类。这个想法是,实际数组实际上是所有锯齿状行的连接块,并且对/*--------------------------------------------------------------------------*/ /** * @brief * Validate command line string for correct command parameters * * @param SeqCmd_T* seqCmd - Sequence command object to evaluate * * @return * bool - true = validated, false = non validated * * Details * SeqCmd_T->paramStr.tokens[0] = SignalName, "Slot1" * SeqCmd_T->paramStr.tokens[1] = Dwell, "1" * */ /*--------------------------------------------------------------------------*/ __getindex__的调用被子类截获并适当地转换。这和ufuncs一样出色。

a picture comparing the memory layout of the actual array to my proposed ragged array interface

但是,例如,当我尝试使用__setindex__时,它会返回基础级联数组的坐标,而我不知道如何更改它。我的想法是:

  • 以某种方式改变了np.where所使用的迭代器的行为-尽管看起来where重载并没有改变__iter__获取其迭代器的方式(这在numpy C中很深)。
  • 在某处运行后,以某种方式截取从该处出来的坐标并将其转换

不幸的是,经过数小时的numpy代码挖掘并阅读了“ subclassing ndarray”文章之后,我无法弄清楚如何执行这两种操作。首选纯Python解决方案,但在这一点上,我也愿意使用C做事情。

0 个答案:

没有答案