我正在尝试执行以下操作:
import numexpr as ne
a = np.random.rand(10, 1)
b = np.random.rand(1, 10)
ne.NumExpr('sum(sum(a*b, 1), 0)').run(a, b) # <- error: reduction operations must occur last
ne.NumExpr('sum(a*b, [1, 0])').run(a, b) # <- error: ValueError: cannot encode axis
这将返回此处记录的错误:
https://github.com/pydata/numexpr/wiki/Numexpr-Users-Guide#supported-reduction-operations
我想知道是否有我没有想到的解决方法。
编辑
回答一些评论:
这是一个比我感兴趣的实际示例更简单的示例。这里有一个更完整的示例:
和这里:
我不希望你通读这些问题。
我对实现感兴趣的主要原因numexpr
是,与我见过的其他任何东西相比,它为多线程提供了简单的支持,并且归约运算符减少了对内存存储的需求,这在我的情况下有时是至关重要的。
我希望这可以解决一些问题。