Почему numpy.round не будет округлять мой массив? - PullRequest
0 голосов
/ 23 февраля 2019

Я пытаюсь округлить массив, который выводится в результате предсказания модели Keras.Однако после выполнения numpy.round / numpy.around изменений нет.

Конечной целью здесь является округление массива до 0, если оно меньше / равно 0,50, или округление в большую сторону, если оно выше 0,50.

Код здесь:

from keras.models import load_model

import numpy

model = load_model('tried.h5')
data = numpy.loadtxt("AppData\Roaming\MetaQuotes\Terminal\94DDB309C90B408373EFC53AC730F336\MQL4\Files\indicatorout.csv", delimiter=",")
data = numpy.array([data])
print(data)
outdata = model.predict(data)
print(outdata)
numpy.around(outdata, 0)
print(outdata)
numpy.savetxt("AppData\Roaming\MetaQuotes\Terminal\94DDB309C90B408373EFC53AC730F336\MQL4\Files\modelout.txt", outdata)

Журналы также здесь:

Using TensorFlow backend.
[[1.19539070e+01 1.72686310e+01 2.24426384e+01 1.82771435e+01
  2.23788052e+01 1.62105408e+01 1.44595184e+01 1.90179043e+01
  1.71749554e+01 1.69194088e+01 1.89911938e+01 1.76701393e+01
  5.19613740e-01 5.38522415e+01 9.64037247e+01 1.73570000e-04
  4.35710000e-04 9.55710000e-04]]
[[0.4215713]]
[[0.4215713]]

Любая помощь будет принята с благодарностью, спасибо.

1 Ответ

0 голосов
/ 24 февраля 2019

Я предполагаю, что вы хотите, чтобы элементы в массиве округлялись до n десятичных знаков.Ниже приведен пример для этого:

# sample array to work with
In [21]: arr = np.random.randn(4)

In [22]: arr
Out[22]: array([-0.94817409, -1.61453252,  0.16566428, -0.53507549])

# round to 3 decimal places; note that `arr` is still unaffected.
In [23]: arr.round(decimals=3)
Out[23]: array([-0.948, -1.615,  0.166, -0.535])

# if you want to round it to nearest integer
In [24]: arr_rint = np.rint(arr)

In [25]: arr_rint
Out[25]: array([-1., -2.,  0., -1.])

Чтобы десятичное округление работало на месте, задайте аргумент out= как в:

In [26]: arr.round(decimals=3, out=arr)
Out[26]: array([-0.948, -1.615,  0.166, -0.535])
...