-
numpy.where(condition[,x,y])
官方文档
返回从x或y中依据condition选出的元素。根据是否输入xy分为两种功能:
满足条件(condition),输出x,不满足输出y。
返回的是一个与x、y格式相同的数组,当condition为True(也就是所谓的满足),返回x对应位置元素;当condition为False,返回y位置对应的元素。
>>> np.where([[True, False], [True, True]],
... [[1, 2], [3, 4]],
... [[9, 8], [7, 6]])
array([[1, 8],
[3, 4]])
这种用法比较容易理解。
只有条件 (condition),没有x和y,则输出满足条件 (即非0) 元素的坐标 (等价于numpy.nonzero)。
这里的坐标以tuple的形式给出,通常原数组有多少维,输出的tuple中就包含几个数组,分别对应符合条件元素的各维坐标。
-
numpy.nonzero(a)官方文档
返回非零索引。
返回一个包含数组的元组(元组长度为a的维度),每个数组描述一个维度中非零元素的索引。
- 先看一维,相对好理解:
-
对于二维数组:
返回一个长度为2的tuple,tuple中第一个表示非零元素在第一个维度中的索引;第二个数组表示第二个维度中的索引。
取tuple中两个array中各自的第0个元素,构成原来c中非零元素的索引。
-
对于三维数组: