在python中为数组使用多个索引

时间:2011-08-04 04:52:36

标签: python arrays indexing numpy

我有一个关于如何为数组或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年龄为1且test_rec.sex为1,即:

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

不幸的是,这不起作用。

2 个答案:

答案 0 :(得分:1)

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 logical operations

numpy.nonzero

答案 1 :(得分:1)

使用logical_and()或bitwise_and(),你可以使用&运算符执行bitwise_and():

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

括号很重要,因为&低于==。