二维数组,不等式和函数

时间:2017-03-16 19:58:54

标签: python arrays numpy multidimensional-array

如果给出类似

的数组
a = array([[2,4,9,8,473],[54,7,24,19,20]])

那么如何编写值x和y之间的数组索引?

目前我有:

where(5 > a > 10)

如果我说的话,如果会输出一个输出:

where(a > 5)

但where函数不接受此命令,一旦它输出一个2维一维数组,有没有办法轻松堆叠它们?

2 个答案:

答案 0 :(得分:1)

您可以使用逻辑运算符&(和)|(或)将不同的条件链接在一起,因此对于您的情况,您可以执行以下操作:

np.where((a > 5) & (a < 10))

# (array([0, 0, 1]), array([2, 3, 1]))
# here np.where gives a tuple, the first element of which gives the row index, while the 
# second element gives the corresponding column index

如果您希望索引是一个数组,其中每一行代表一个元素,您可以堆叠它们:

np.stack(np.where((a > 5) & (a < 10)), axis=-1)
# array([[0, 2],
#        [0, 3],
#        [1, 1]])

或者@Divakar评论使用np.argwhere((a > 5) & (a < 10))

答案 1 :(得分:0)

您需要指定两个索引,一个是您要引用的内部数组,另一个是您引用的该数组的实际成员