首页 > 解决方案 > 具有减少功能的自定义 numpy 函数

问题描述

我正在尝试创建一个可以减少包含sympy Symbol对象的数组的函数。Elementwise 函数和减少 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如果没有明确的重塑,类似的事情就无法工作。

标签: numpysympy

解决方案


推荐阅读