Создание пустой матрицы - PullRequest
0 голосов
/ 03 ноября 2019

Как сделать пустую матрицу с K строками? Тогда как мне добавить что-то в этот массив, введя его в эту конкретную строку? Я прошу, чтобы я мог найти среднее значение каждой строки после того, как я организовал значения для алгоритма k-средних, чтобы я мог установить новые центроиды.

Clabel = []
Cvalue = []
clusters = [] #This is what I want to have as a matrix
x = numpy.mean(df[:,0:d], axis = 1)
count = 0
for i in range(n):
    temp = []
    for j in range(k):
        dist = numpy.linalg.norm(ids[j] - x[i])
        temp.append(dist)
    v = numpy.argmin(temp)
    w = numpy.amin(temp)
    Clabel.append(v+1)
    Cvalue.append(w)
    clusters = numpy.concatenate(([Clabel],[Cvalue]), axis = 0)

Проблема заключается в том, как ясделал это, он делает 2 ряда. Первая строка - это метки для кластеров, а вторая - все значения, которые я нашел. Есть ли лучший способ организовать это? В настоящее время он возвращает это в виде матрицы

[[1.    1.    1.    3.    3.    1.    2.    3.   ]
 [0.325 0.15  0.1   0.325 0.425 0.3   0.1   0.45 ]]

Я хочу, чтобы это было сделано.

[[0.325, 0.15, 0.1, 0.3]
 [0.1]
 [0.325, 0.425, 0.45]]

Любая помощь будет оценена.

1 Ответ

1 голос
/ 03 ноября 2019

Отредактировано:

Numpy позволяет использовать select на основе условия.

import numpy as np
from pprint import pprint
a = np.array([[1.,    1.,    1.,    3.,    3.,    1.,    2.,    3.   ], \
[0.325, 0.15 , 0.1 ,  0.325, 0.425, 0.3,   0.1,   0.45 ]])

b = []
for val in set(a[0]):
    b.append(a[1][a[0]==val])
pprint(b)

Исходный ответ:

Поскольку вы уже используете numpy, и если вы знаетеразмерность матрицы, иначе номера строк и столбцов.

import numpy as np
m = np.zeros(shape=(2,2))

m[0] = [1,2]
m[1] = [3,4]

Надеюсь, это поможет.

...