numpy记录 一: np.where()
先贴一个官方解释点这里。
先看输入格式numpy.where(condiction,[x,y])
,分为两种情况,分别为numpy.where(condiction)
和numpy.where(condiction,x,y)
.
1. numpy.where(condiction)
这种情况输出为符合条件元素的索引。
当数组为一维数组时,返回一维索引:
上图中一维数组a大于6的元素有:7,9,它们的索引为4,5,所以输出为一维数组[4, 5].
当数组为二维数组时:
上图二维数组a大于3的元素有:4,5,它们的索引分别为(2,0),(2,1),返回两个数组,第一个数组[2,2]为索引的第零维坐标(python的维度从零开始),第二个数组[0,1]为第一维坐标,依次类推。
当输入为N维时,返回N个数组,每一个数组对应一个维度的坐标。
2. numpy.where(condiction,x,y)
这种情况与第一种输出索引不同,符合条件时输出x,否则输出y.
当输入condiction,x,y
同型时:
输入为condiction=[[False, True], [True, False]]
,x=[[2, 5], [6, 1]]
,y=[[5, 8], [0, 3]]
condiction第一个为False,则在x的第一个元素和y的第一个元素中选择y的第一个元素,即在[2,5]中选择5,condiction第二个为True,则在x的第二个元素和y的第二个元素中选择x的第二个元素,即在[5,8]中选择5,依次类推。最后结果与x,y同型.
当输入x,y
为常数时,结果就与条件同型,且输入condiction
0为False,大于0为True。
总结:碰到np.where(),首先看输入情况,只有condiction
则输出符合条件元素的索引。有condiction,x,y
时,符合条件输出x,不符合条件输出y。