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
来计算nx
和ny
。另外,因为我必须检索一次 x 和 y 并且它们在内存中一个接一个,所以我也会减少缓存未命中;和 的书写也是nx
如此ny
。但是,据我了解,就目前而言,这种代码不可能使用 Numexpr。
所以,我的问题:
python + numpy 是否有更高级的东西可以做到这一点?(numexpr的一些超集)
或者,我错了,这可以简单地用 numpy 和 numexpr 来完成?
注意 1:我知道我可以在 C/C++/其他语言中以多种方式实现这个小功能,或者我可能不太关心性能,并且可以使用或不使用 numexpr 进行涉及 numpy 的 hack。
注意 2:我知道weave,但我把它放在“不酷、不维护的解决方案,这些解决方案会涉及弄乱 C”中。