我有此代码:
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
对应,将存储桶的编号分组)似乎是问题所在。根据{{3}}的建议,我尝试在代码中使用np.array
,但收到了两个数组,而不是我期望的那样。另外,在添加sum(listY)
中的值时,它不会返回正确的数字。当我仅使用测试编号运行函数(x
,indices
和index
变量)中的行时,就会收到正确的结果。有可以转换此数组的python函数吗?