numpy基本功能在哪里,它对数组有什么作用?

时间:2014-01-22 15:50:06

标签: python arrays numpy

我看过帖子Difference between nonzero(a), where(a) and argwhere(a). When to use which?,我真的不明白numpy模块中where函数的用法。

例如我有这段代码

import numpy as np

Z =np.array( 
    [[1,0,1,1,0,0],
     [0,0,0,1,0,0],
     [0,1,0,1,0,0],
     [0,0,1,1,0,0],
     [0,1,0,0,0,0],
     [0,0,0,0,0,0]])
print Z
print np.where(Z)

给出了:

(array([0, 0, 0, 1, 2, 2, 3, 3, 4], dtype=int64), 
 array([0, 2, 3, 3, 1, 3, 2, 3, 1], dtype=int64))

where函数的定义是: 返回元素,可以是x或y,具体取决于条件。但它对我来说也没有意义

那么输出究竟意味着什么?

1 个答案:

答案 0 :(得分:2)

np.where返回满足给定条件的索引。在您的情况下,您要求Z中的值不是0的索引(例如,Python将任何非0值视为True)。 Z导致的结果是:

(0, 0) # top left
(0, 2) # third element in the first row
(0, 3) # fourth element in the first row
(1, 3) # fourth element in the second row
...    # and so on

np.where在以下场景中开始有意义:

a = np.arange(10)
np.where(a > 5) # give me all indices where the value of a is bigger than 5
# a > 5 is a boolean mask like [False, False, ..., True, True, True]
# (array([6, 7, 8, 9], dtype=int64),)

希望有所帮助。