У меня есть этот код:
import numpy as np
def buckets(listInput, intBuckets):
x = np.linspace(np.min(listInput),np.max(listInput), intBuckets)
indices = np.digitize(listInput, x)
index = np.unique(indices, return_counts = True)
return x, index
Я пишу функцию для подсчета групп чисел для создания гистограммы.listInput
принимает список целых чисел, а intBuckets
- количество требуемых сегментов для гистограммы.Код не возвращает никаких ошибок.Проблема с выходом.Когда я тестирую код, я получаю один из массивов в формате dtype = int64.Вот пример кода теста:
#Test
listTemp = np.random.randint(0,20,10)
listX, listY = buckets(listTemp,5)
print(listTemp)
print(listX)
print(listY)
print(sum(listY))
[17 7 13 19 15 0 15 2 5 13]
[ 0. 4.75 9.5 14.25 19. ]
[array([1, 2, 3, 4, 5], dtype=int64), array([2, 2, 2, 3, 1], dtype=int64)]
[3 4 5 7 6]
Проблема listY
(которая соответствует np.unique
, которая группирует числа для сегментов), кажется.По подобному вопросу, предложенному , я попытался использовать np.array
в коде, но получил два массива, а не один, как я ожидал.Кроме того, при добавлении значений в sum(listY)
он не возвращает правильное число.Когда я запускаю только строки внутри функции (x
, indices
и index
переменные) с номерами тестов, я получаю правильный результат.Есть ли функция Python, которая может преобразовать этот массив?