gpt4 book ai didi

python - 确定 ndarray 子类上的 __array_wrap__ 是从一元 ufunc 还是二进制 ufunc 调用的

转载 作者:太空狗 更新时间:2023-10-30 00:17:51 26 4
gpt4 key购买 nike

有没有办法判断一个 ndarray 子类的 __array_wrap__是用一元函数还是二元函数调用的? (另一个 reference )

最佳答案

这只是部分答案:

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.absnp.sqrt 这样的东西是 unary 函数。

关于python - 确定 ndarray 子类上的 __array_wrap__ 是从一元 ufunc 还是二进制 ufunc 调用的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15297534/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com