有没有办法判断 ndarray 子类__array_wrap__
是用一元函数还是二元函数调用的?(另一个参考)
问问题
238 次
1 回答
1
这只是部分答案:
ufunc 的参数作为元组传递给context
. 表格是:
(ufunc, ufunc_args, ufunc_domain)
您可以检查 的长度ufunc_args
以查看是否有 1 个或 2 个参数。作为旁注,我不知道是什么ufunc_domain
(在我的测试中,它似乎总是0
)...
import numpy as np
class Tester(np.ndarray):
def __array_wrap__(self,output,context=None):
print context[0].__name__,'is binary' if len(context[1]) > 1 else 'is unary'
return np.ndarray.__array_wrap__(self,output,context)
a = np.zeros(10)
b = a.view(Tester)
print (type(b))
-b
np.sqrt(b)
b+b
我想这就是你如何__array_wrap__
判断它是二进制还是一元ufunc。不幸的是,当我一开始问这个问题时,我希望知道这个 ufunc 调用是否是一元运算符的结果。我没有想到像函数这样的np.abs
东西。np.sqrt
unary
于 2013-03-08T15:53:30.407 回答