1

Numexpr 是一个 python 模块,它允许 jitting 一些表达式来处理 numpy 数组。现在,如果它允许我这样做会很酷:

ne.evaluate( """
    r = y 
    cita = 2*pi*x/x_span
    nx = CENTER_X + cos( cita ) * r 
    ny = CENTER_Y + sin( cita ) * r
    """, local_dict={ 'x': xy_array[:,0],
                  'y': xy_array[:,1],
                  'x_span': x_span,
                  'y_span': y_span,
                  'pi': 3.141592,
                  'nx': nxy[:0],
                  'ny': nxy[:1],
                  'CENTER_X': ...,
                  'CENTER_Y': ...,            
                }, 
     )

我可以重新使用计算的值cita来计算nxny。另外,因为我必须检索一次 x 和 y 并且它们在内存中一个接一个,所以我也会减少缓存未命中;和 的书写也是nx如此ny。但是,据我了解,就目前而言,这种代码不可能使用 Numexpr。

所以,我的问题:

python + numpy 是否有更高级的东西可以做到这一点?(numexpr的一些超集)

或者,我错了,这可以简单地用 numpy 和 numexpr 来完成?

注意 1:我知道我可以在 C/C++/其他语言中以多种方式实现这个小功能,或者我可能不太关心性能,并且可以使用或不使用 numexpr 进行涉及 numpy 的 hack。

注意 2:我知道weave,但我把它放在“不酷、不维护的解决方案,这些解决方案会涉及弄乱 C”中。

4

0 回答 0