2015-10-10 5 views
0

Я новичок в numpy. У меня есть матрица Nx4, и я хочу найти среднее значение для каждого столбца, если последний столбец равен 1, например. В Matlab я бы сделал что-то вроде mean1 = mean(data[column 4] == 1). Это вернет матрицу (или вектор) со средним числом столбцов, при этом средний столбец 4 будет равен 1. Я не могу найти какую-либо конкретную документацию, которая указывает, как справиться с этим. This показывает, как фильтровать матрицу, но мне не нужно переназначать матрицу новой переменной, удваивая размер хранилища. Заранее спасибо.Найти среднее значение всех столбцов матрицы, отфильтрованной в последнем столбце

ответ

1
#make artificial data to match problem 
data = np.random.random((100,4)) 
print(id(data)) 
data[:,3] = data[:,3] < 0.5 
print(id(data)) #same object (memory location) 
#get the filter 
dfilter = data[:,3].astype(np.bool_) 
#find the means 
means = data[dfilter].mean(axis=0) 
+0

Спасибо. Я сделал: 'dfilter = data [:, 3] = data [:, 3] == 1' 'mean1 = data [dfilter] .mean (0)' – TriHard8

+0

Мне нужны были искусственные данные для иллюстрации. Вы можете просто выполнить данные [data [:, 3] == 1] .mean (0) '. – Alan

+0

Переменный метод работает лучше всего для этого случая. Я занимаюсь машиной, поэтому я должен использовать фильтр больше, чем просто среднее. Просто из любопытства, это создает матрицу указателей в бэкэнде или создает совершенно новую копию матрицы? – TriHard8

Смежные вопросы