Почему математические операции с моим массивом целых чисел np округляют значения, а не генерируют числа с плавающей запятой?

Я пытаюсь выполнить масштабирование функций min/max в массиве 2D Numpy. Вот мой код:

def mm_scale(min, max, data):

    for i in range(0, len(data)):
        for j in range(0, len(data[0])):

            #Here's where the scaling happens. "min" and "max" are the min and max array values.
            data[i][j] = ((data[i][j] - min)/(max - min))

    return data

Если я ввожу матрицу, заполненную значениями INT, матрица возвращается со значениями либо нуля, либо единицы. Я ищу что-то более точное, чем это, например, число с плавающей запятой как минимум с пятью десятичными знаками.

Если я запустил свою функцию в этом массиве:

[[ 4 82 23 31 55 30 72 44 12 70]
 [63 52  7 77  2 31 63 62 98 41]
 [ 9 23 17 96 16 72 64 66 89 32]
 [62 67 81 47 11 11 99 55 16 97]
 [54 72 94 58 22 22 42 88 76 55]
 [80 75 58 71  5 62 31 36 28 62]
 [68  8 58 78 54 35 15 78  9  3]
 [29 17 29 52 90 54 52 54 92 50]
 [48 11  7 83 39 45 29 88 49 67]
 [91 17 27 25 48 34 43 68 32 81]]

В результате получился такой массив:

 [0 0 0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 1 0 0 0]
 [0 0 0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0 0 0]]

Я решил проверить математику на обычных целых числах вне массивов. Если я сделаю это:

print((55 - 2)/(88-2))

Я не получаю округленное значение! Вместо этого я получаю 0,6162790697674418. Что-то происходит в моем массиве np, что заставляет мои значения округляться до единицы или нуля вместо того, чтобы красиво становиться десятичными?

0 ответов

Другие вопросы по тегам