我正在尝试创建一个函数,该函数可以减少包含 sympy
Symbol
对象的数组。元素功能和减少超过 1 轴似乎工作:
from sympy import symarray, Max
import numpy as np
a = symarray('a', (3,3))
f = np.frompyfunc(lambda x,y: Max(x,y), 2, 1)
f.reduce(a, axis=0)
输出:
array([Max(a_0_0, a_1_0, a_2_0), Max(a_0_1, a_1_1, a_2_1),
Max(a_0_2, a_1_2, a_2_2)], dtype=object)
但我不能指定多个轴:
f.reduce(a, axis=(0,1))
输出:
ValueError: reduction operation '<lambda> (vectorized)' is not reorderable, so at most one axis may be specified
当然,我可以做 f.reduce(f.reduce(a, axis=0), axis=0)
之类的事情,但我希望有一种更优雅的方式来做,而 keepdims=True
之类的事情在没有显式重塑的情况下不起作用。