H

'vectorize' object has no attribute '~'の解決法

自分のプログラムをテストしている時に、こんなエラーが出た。
'vectorize' object has no attribute '~'

このエラーに対する対応を記録しておく。

関数は、このような形で定義されていた。

class hoge:
    def huga:

最初の対応

まず、

numpy.vectorize(hoge.huga)(~)

としていたので、記法が間違っていると思い

a = numpy.vectorize(hoge.huga)
a(~)

としたが、変わらなかった。

そもそもvectorizeとは?

vectorizeというのはなんだろう。
普通の関数の場合、タイプは'function'となる。そして、このfunctionをnumpy.vectorize()を使ってベクトル化すると、タイプは'numpy.vectorize'となるのだ。

解決

実を言うと、このコードには、もう一つ似たようなhoge_みたいな名前の変数があったんですよね。
それと混同していて、それが原因でした。

numpy.vectorize(hoge_.huga)
#っていうのを
numpy.vectorize(hoge.huga)
#にした。

そしたら治りました。