Используя NumPy для расчета среднего? - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть 2D-массив, который выглядит следующим образом:

array = [[23 ,89, 4, 3, 0],[12, 73 ,3, 5,1],[7, 9 ,12, 11 ,0]]

Где последний столбец всегда 0 или 1 для всех строк.Моя цель состоит в том, чтобы рассчитать два средних для столбца 0, где одно среднее будет, когда значение последнего столбца равно 0, а одно среднее будет, когда значение последнего столбца будет равно 1.

, например, для данного массива образцов выше: среднее значение 1: 15 (среднее значение для столбца 0 для всех строк, где последний столбец равен 0) среднее значение 2: 12 (среднее значение для столбца 0 для всех строк, где последний столбец равен 1)

Я пробовал это (где train - это имя моего входного массива):

 mean_c1_0=np.mean(train[:: , 0])
 variance_c1_0=np.var(train[:: , 0])

Это дает мне среднее значение и дисперсию для столбца 0 со всеми значениями.

Я всегда могу ввести еще один цикл for и пару условий if, чтобы продолжать проверять последний столбец и только потом добавлять соответствующие значения в столбец 0, но я ищу эффективный подход.Так как я новичок в Python, я надеялся, что есть просто функция, которая сможет это сделать.

Можете ли вы указать мне любую такую ​​документацию?

Ответы [ 2 ]

0 голосов
/ 06 февраля 2019

Вы можете попробовать это.

mean_of_zeros = np.mean(numpy_array[np.where(numpy_array[:,-1] == 0)])

mean_of_ones = np.mean(numpy_array[np.where(numpy_array[:,-1] == 1)])
0 голосов
/ 06 февраля 2019

Вы можете использовать фильтрацию массива numpy.(см. Как я могу нарезать пустой массив по значению i-го поля? ), и просто получить среднее значение таким образом.Петли не нужны.

import numpy
x = numpy.array([[23, 89, 4, 3, 0],[12, 73, 3, 5, 1],[7, 9, 12, 11, 0]])
numpy.mean(x[x[:,-1]==1][::,0])
numpy.mean(x[x[:,-1]==0][::,0])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...