質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

797閲覧

ndarrayの演算後の全域print文のエラー

sigefuji

総合スコア125

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2022/09/14 09:17

###前提
ndarrayの領域確保と全域プリントを調べていますが、エラーとなる場合があります。
全域print文#1,#2,#3,#4,#5,#6,#7 の内 #1から#5は正常で、#6,#7も正常(全域がプリントされること)と期待していますが、エラーとなります。
他に、#10のfloat変換を外した#11でもエラーとなります。
このことから、#10,#11,#12の演算を行う部分に問題があるように見えます。
なぜ#10,#11,#12の演算(差分を計算する)のところに問題があるのでしょうか。
#12の単なる代入だけでNGとなるところから、そもそもfloatに対する代入が問題のように見えます。
根本原因は何でしょうか? ndarrayの操作だけに限ります。
また、エラーの内容はなにか、正常時と同じような操作なのに、解せません。

実現したいこと

原因の理解とndarrayの操作に限っての対策

発生している問題・エラーメッセージ

ValueError: Only callable can be used as callback

該当のソースコード

python

1import numpy as np 2 3print('numpy version :', np.__version__) 4 5 6npdt = np.array([4377, 4378, 4375, 4374, 4380]) 7print("#1",npdt) #整数npアレイ 8 9a = np.arange(10) 10print("#2",a) 11 12df = np.array([0.0 for i in range(10)]) 13df2 = np.array([0.0 for i in range(10)]) 14intdf = np.array([0 for i in range(10)]) 15print("#3",df) #float=0 16 17for i in range(1,len(npdt)): 18 df[i] = float(npdt[i]) - float(npdt[i-1]) #10 19 #df[i] = npdt[i] - npdt[i-1] #11 20 df2[i] = float(npdt[i]) #12 21 intdf[i] = npdt[i] - npdt[i-1] #13 22df[0]=0.0 23intdf[0]=0 24df2[0]=0 25print(type(df)) 26print("#4",intdf) 27print("#5",df[0],df[1],df[2],df[3],df[4]) 28print("#6",df) 29print("#7",df2) 30

試したこと

補足情報(FW/ツールのバージョンなど)

コンソール出力
runfile('C:/book/rnn1/test2.py', wdir='C:/book/rnn1')
numpy version : 1.23.1
#1 [4377 4378 4375 4374 4380]
#2 [0 1 2 3 4 5 6 7 8 9]
#3 [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
<class 'numpy.ndarray'>
#4 [ 0 1 -3 -1 6 0 0 0 0 0]
#5 0.0 1.0 -3.0 -1.0 6.0
#6 Traceback (most recent call last):

File "C:\book\rnn1\test2.py", line 25, in <module>
print("#6",df)

File "C:\anaconda3\envs\py38tf\lib\site-packages\numpy\core\arrayprint.py", line 1592, in _array_str_implementation
return array2string(a, max_line_width, precision, suppress_small, ' ', "")

File "C:\anaconda3\envs\py38tf\lib\site-packages\numpy\core\arrayprint.py", line 736, in array2string
return _array2string(a, options, separator, prefix)

File "C:\anaconda3\envs\py38tf\lib\site-packages\numpy\core\arrayprint.py", line 513, in wrapper
return f(self, *args, **kwargs)

File "C:\anaconda3\envs\py38tf\lib\site-packages\numpy\core\arrayprint.py", line 539, in _array2string
format_function = _get_format_function(data, **options)

File "C:\anaconda3\envs\py38tf\lib\site-packages\numpy\core\arrayprint.py", line 472, in _get_format_function
return formatdict'float'

File "C:\anaconda3\envs\py38tf\lib\site-packages\numpy\core\arrayprint.py", line 411, in <lambda>
'float': lambda: FloatingFormat(

File "C:\anaconda3\envs\py38tf\lib\site-packages\numpy\core\arrayprint.py", line 932, in init
self.fillFormat(data)

File "C:\anaconda3\envs\py38tf\lib\site-packages\numpy\core\arrayprint.py", line 943, in fillFormat
with errstate(over='ignore'): # division can overflow

File "C:\anaconda3\envs\py38tf\lib\site-packages\numpy\core_ufunc_config.py", line 432, in enter
self.oldcall = seterrcall(self.call)

File "C:\anaconda3\envs\py38tf\lib\site-packages\numpy\core_ufunc_config.py", line 305, in seterrcall
raise ValueError("Only callable can be used as callback")

ValueError: Only callable can be used as callback

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jbpb0

2022/09/14 09:46

google colabで、質問のコードを全くそのまま実行してみたのですが、以下の表示がされて、エラーは出ませんでした numpy version : 1.21.6 #1 [4377 4378 4375 4374 4380] #2 [0 1 2 3 4 5 6 7 8 9] #3 [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.] <class 'numpy.ndarray'> #4 [ 0 1 -3 -1 6 0 0 0 0 0] #5 0.0 1.0 -3.0 -1.0 6.0 #6 [ 0. 1. -3. -1. 6. 0. 0. 0. 0. 0.] #7 [ 0. 4378. 4375. 4374. 4380. 0. 0. 0. 0. 0.]
jbpb0

2022/09/14 09:54

当方のmacのpythonでも、質問のコードを全くそのまま実行してみたのですが、google colabと同様に以下の表示がされて、エラーは出ませんでした numpy version : 1.21.5 #1 [4377 4378 4375 4374 4380] #2 [0 1 2 3 4 5 6 7 8 9] #3 [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.] <class 'numpy.ndarray'> #4 [ 0 1 -3 -1 6 0 0 0 0 0] #5 0.0 1.0 -3.0 -1.0 6.0 #6 [ 0. 1. -3. -1. 6. 0. 0. 0. 0. 0.] #7 [ 0. 4378. 4375. 4374. 4380. 0. 0. 0. 0. 0.]
sigefuji

2022/09/14 11:22

早速試していただきありがとうございます。 当方のnavigatorの仮想環境・keras用・pytorch用の2種類あって、問題はkerasで生じたので、 ならばと今keras用で試すとOKでした。ただnumpyのバージョンはそれぞれ1.23.1(エラー)と1.21.6と多少異なりますがそれくらいでと言いたくなります。 困りました。keras用の仮想環境を再構築やるよりなさそうかなと(悲しい)。 いずれにしてもコードは正しいですね。
sigefuji

2022/09/14 11:25

訂正  ならばと今keras用で試すとOKでした。 → ならばと今pytorch用で試すとOKでした。
jbpb0

2022/09/15 00:45

> numpyのバージョンはそれぞれ1.23.1(エラー)と1.21.6と多少異なります google colabでnumpyのバージョンを変えて確認しようと思ったのですが、numpy 1.22以降はpython 3.7用のwheelは用意されてなく、インストールできませんでした (google colabのpythonのバージョンを変えるのは、ちょっとめんどくさい) https://pypi.org/project/numpy/1.22.0/#files
sigefuji

2022/09/15 01:29

そこまでやっていただくには及びません。 もうanacond3をアンインストールしてインストール(それも2回目)中です。 ほんとにanacondaのバージョン管理には厳密で苦労します。この1ケ月くらいの間にインストールは何回も、仮想環境は数えくれないくらい。バージョンバン番号の範囲は出ますがやくたたずで、あっちをたてればこちらが立たずで、すべてを満足する組み合わせは運次第です。こんなことで普及しているらしいのが不思議。
sigefuji

2022/09/15 02:43

再構築が終った同じ仮想環境で、問題の発生しないことがわかりました。 環境が壊れていたと考えられます。
sigefuji

2022/09/15 02:45

他の環境で問題ないことが解決のヒントとなりました。ありがとうございました。
jbpb0

2022/09/15 04:17

> 再構築が終った同じ仮想環境で、問題の発生しないことがわかりました。 numpyのバージョンが1.23でも大丈夫でした?
sigefuji

2022/09/15 05:23

再構築した仮想環境のnumpyは1.22.3でした。1.23.1は試していません。 python 3.8.13 再構築時の全体のバージョン(インストール順でも変わる) matplotlib version : 3.5.2 scipy version : 1.7.3 numpy version : 1.22.3 tensorflow version : 2.9.1 keras version : 2.9.0 恐らくバージョンではなく何かがこわれたと思っています。spyderがquitできない現象もありましたので。タスクマネージャーでkill。
guest

回答1

0

ベストアンサー

ValueError: Only callable can be used as callback

google colabと、当方のmacのpythonで、質問のコードを全くそのまま実行してみたのですが、どちらで実行した場合でも上記のエラーは出ずに、正常に実行できました

投稿2022/09/15 22:45

jbpb0

総合スコア7651

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sigefuji

2022/09/16 01:10

試していただいた環境でOKで、また当方の別な環境でも正常であることや使用したspyderにも不可解な現象(quitができない)もあったことを考えると、エラーの出た環境に問題があると考え、環境を再構築(anaconda3を再インストールから行う)した結果、正常になった。 このような不具合が環境によっても起こりえることであることがわかった。 試していただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問