具有减少功能的自定义 numpy 函数

时间:2021-06-17 20:27:53

标签: numpy sympy

我正在尝试创建一个函数,该函数可以减少包含 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 之类的事情在没有显式重塑的情况下不起作用。

0 个答案:

没有答案