我正在编写一些python + numpy + cython代码,并试图找到在数组上进行以下迭代的最优雅和有效的方法:
假设我有一个函数f(x,y),它采用形状(3,)的向量x和形状(10,)的向量y,并返回形状(10,)的向量.现在我有两个数组X和Y形状sx +(3,)和sy +(10,),其中sx和sy是两个可以一起广播的形状(即sx == sy,或者轴不同,其中一个长度为1,在这种情况下将重复).我想生成一个形状为zs +(10,)的数组Z,其中zs是带有sy的sx广播的形状.Z中的每个10维向量等于X和Y中相应位置处的向量x和y的f(x,y).
我查看了np.nditer,虽然它与cython一起玩得很好(参见链接页面的底部),但它似乎不允许迭代来自多维数组的向量而不是元素.我也查看了索引网格,但问题是当索引的数量等于数组的维数时,cython索引只是快速的,并且存储为cython整数而不是python元组.
任何帮助是极大的赞赏!