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
andのようなものnp.sqrt
をunary
関数とは考えていませんでした。
于 2013-03-08T15:53:30.407 に答える