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

Мой вопрос должен быть тривиальным, но я не могу понять это сам. У меня есть объект 2x2, и я хочу разделить его на 2x1, чтобы первый компонент разделял первый ряд, а второй - второй ряд. Как это сделать?

cm = sklearn.metrics.confusion_matrix(Y1,Y2)
cm_sum = np.sum(cm, axis=1)
cm_perc = cm /  cm_sum.astype(float) * 100

1 Ответ

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

Вам просто нужно иметь правильное измерение. Тот, который вы делите, должен быть вектором столбца, для этого мы используем .rehshape(-1,1).

a = np.array([[2,3], [5,6]])
print(a)
b = np.array([2, 4]).reshape(-1,1)
print(b)
print(a/b)

Вывод

[[2 3]
 [5 6]]
[[2]
 [4]]
[[1.   1.5 ]
 [1.25 1.5 ]]

Таким образом, ваш код будет -

Y1 = [1,0,1,0]
Y2 = [0,0,1,0]
cm = metrics.confusion_matrix(Y1,Y2)
cm_sum = np.sum(cm, axis=1).reshape(-1,1)
cm_perc = cm /  cm_sum

Вы также можете использовать аргумент keepdims в np.sum, который в основном сохранит размеры, и в этом случае на выходе будет вектор-столбец. Так что -

cm_sum = np.sum(cm, axis=1, keepdims=True) 

тоже будет работать

...