count numpy 2D array count

时间:2018-11-12 03:59:51

标签: python arrays numpy

我有一个列表called months: array([ 1, 1, 1, ..., 12, 12, 12]),,有1〜12个月 还有一个名为best_labels :array([8, 0, 0, ..., 6, 0, 0], dtype = int32)`的列表,它具有10个簇(0〜9)

两者的长度相同,为72915。

现在,我想创建一个名为C[i-1][j]的numpy数组,以计算在第i个月中发布的集群j的数量。

结果应如下所示:12行(月)* 10列(集群), 例如,C [0] [0] = 5251,这意味着在第1个月中发生了5251个群集1。

array([[5251,    2,  226,    0,    0,    0,  163,    0,  147,    0],
       [5251,    2,  226,    0,    0,    0,  163,    0,  147,    0],
       [5251,    2,  226,    0,    0,    0,  163,    0,  147,    0],
       [5251,    2,  226,    0,    0,    0,  163,    0,  147,    0],
       [5251,    2,  226,    0,    0,    0,  163,    0,  147,    0],
       [5251,    2,  226,    0,    0,    0,  163,    0,  147,    0],
       [5251,    2,  226,    0,    0,    0,  163,    0,  147,    0],
       [5251,    2,  226,    0,    0,    0,  163,    0,  147,    0],
       [5251,    2,  226,    0,    0,    0,  163,    0,  147,    0],
       [5251,    2,  226,    0,    0,    0,  163,    0,  147,    0],
       [5251,    2,  226,    0,    0,    0,  163,    0,  147,    0],
       [5251,    2,  226,    0,    0,    0,  163,    0,  147,    0]])

我已经这样做了,但是它有 TypeError:只有整数标量数组可以转换为标量索引

C = np.zeros((12,best_k),dtype=np.int)
A = list(zip(months,best_labels))
for i in range(1,13):
    count =0
    for j in range(1,11):
        if C[i]==A[months] and C[j]==A[best_labels]:
            C[i][j] = count+1

1 个答案:

答案 0 :(得分:0)

我认为您的循环应该是这样

C = np.zeros((12,best_k),dtype=np.int)
A = list(zip(months,best_labels))

for month, label in A:
    C[month-1][label] += 1