。しかしvectorize
が正しい結果得られます。また
>>> np.logaddexp(1.0, X)
array([ 1.00000000e+00, 1.00000000e+00, 1.00000000e+00,
1.00001670e+00, 1.12692801e+00, 1.31326169e+00,
1.69314718e+00, 1.000e+01, 1.00000000e+02,
1.00000000e+03, 1.00000000e+04])
をnp.around
は正しく結果丸め:
>>> np.around(np.loagaddexp(1.0, X))
array([ 1.00000000e+00, 1.00000000e+00, 1.00000000e+00,
1.00000000e+00, 1.12690000e+00, 1.31330000e+00,
1.69310000e+00, 1.00001000e+01, 1.00000000e+02,
1.00000000e+03, 1.00000000e+04])
をしかし、あなたは唯一の4小数点以下を表示したい場合には、例えば、何か他のものを使用する必要がありますnp.array2string
:
>>> print(np.array2string(np.logaddexp(1., X), precision=4))
[ 1.0000e+00 1.0000e+00 1.0000e+00 1.0000e+00 1.1269e+00
1.3133e+00 1.6931e+00 1.0000e+01 1.0000e+02 1.0000e+03
1.0000e+04]
それとも、あなたが使用できる4
小数カスタムフォーマを表示したい場合、 tter:
>>> print(np.array2string(np.logaddexp(1., X), formatter={'float': '{:.4f}'.format}))
[1.0000 1.0000 1.0000 1.0000 1.1269 1.3133 1.6931 10.0001 100.0000
1000.0000 10000.0000]
かseperator
と:print文が異なること
>>> print(np.array2string(np.logaddexp(1., X),
... formatter={'float': '{:.4f}'.format},
... separator=', '))
[1.0000, 1.0000, 1.0000, 1.0000, 1.1269, 1.3133, 1.6931, 10.0001, 100.0000,
1000.0000, 10000.0000]
「ベクトル化」ロジックはすべて冗長です。単に 'np.logaddexp(1.0、X)'を使用してください。 –
@NilsWerner Trueですが、それは問題ではありません。 –
そして、私にとっては出力も正しいです( 'array([...、1.12690000e + 00、1.31330000e + 00、...]))。たぶん、印刷フォーマットの浮動小数点値と丸めを混同しているのでしょうか? –