Использование нескольких указателей для массивов в Python - PullRequest
4 голосов
/ 04 августа 2011

У меня простой вопрос о том, как использовать несколько индикаторов для массива или rec.array. Более конкретно, я хочу выделить ячейку (и) в массиве, которые удовлетворяют нескольким условиям. Например:

import numpy as np
test = np.ones(5)
test_rec = test.view(recarray)
test_rec.age = np.array([0,1,2,1,4])
test_rec.sex = np.array([0,1,1,0,0])

Я хочу выделить test_rec, где test_rec age равен 1, а test_rec.sex равен 1, то есть:

test_rec[test_rec.age==1 and test_rec.sex==1]

К сожалению, это не работает.

Ответы [ 2 ]

1 голос
/ 04 августа 2011

используйте logic_and () или bitwise_and (), и вы можете использовать & оператор для выполнения bitwise_and ():

test_rec[(test_rec.age==1) & (test_rec.sex==1)]

скобки важны, потому что приоритет & ниже, чем ==.

1 голос
/ 04 августа 2011
age_is_one = test_rec.age == 1
sex_is_one = test_rec.sex == 1
age_and_sex = numpy.logical_and(age_is_one, sex_is_one)
indices = numpy.nonzero(age_and_sex)
test_rec[indices]

См:

логические операции numpy

numpy.nonzero

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...