У меня есть список 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]
для подсчета количества кластеров j, которые были опубликованы в месяце i.
Результат должен выглядеть следующим образом: 12 строк (месяцев) * 10 столбцов (кластеров),
например, C [0] [0] = 5251, что означает 5251 номер кластера 1, который произошел в месяце 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