np.where()[0] 和 np.where()[1]的具体使用
本文主要介绍了np.where()[0]和np.where()[1]的具体使用,以及np.where()的具体用法,废话不多说,具体如下:
importnumpyasnp a=np.arange(12).reshape(3,4) print('a:',a) print('np.where(a>5):',np.where(a>5)) print('a[np.where(a>5)]:',a[np.where(a>5)]) print('np.where(a>5)[0]:',np.where(a>5)[0]) print('np.where(a>5)[1]:',np.where(a>5)[1]) print(a[np.where(a>5)[0],np.where(a>5)[1]])
a:[[0123] [4567] [891011]] np.where(a>5):(array([1,1,2,2,2,2]),array([2,3,0,1,2,3])) a[np.where(a>5)]:[67891011] np.where(a>5)[0]:[112222] np.where(a>5)[1]:[230123] [67891011]
np.where()[0]表示行索引,np.where()[1]表示列索引
numpy.where()有两种用法:
1.np.where(condition,x,y)
满足条件(condition),输出x,不满足输出y。
如果是一维数组,相当于[xvifcelseyvfor(c,xv,yv)inzip(condition,x,y)]
>>>aa=np.arange(10) >>>np.where(aa,1,-1) array([-1,1,1,1,1,1,1,1,1,1])#0为False,所以第一个输出-1 >>>np.where(aa>5,1,-1) array([-1,-1,-1,-1,-1,-1,1,1,1,1]) >>>np.where([[True,False],[True,True]],#官网上的例子 [[1,2],[3,4]], [[9,8],[7,6]]) array([[1,8], [3,4]])
上面这个例子的条件为[[True,False],[True,False]],分别对应最后输出结果的四个值。第一个值从[1,9]中选,因为条件为True,所以是选1。第二个值从[2,8]中选,因为条件为False,所以选8,后面以此类推。类似的问题可以再看个例子:
>>>a=10 >>>np.where([[a>5,a<5],[a==10,a==7]], [["chosen","notchosen"],["chosen","notchosen"]], [["notchosen","chosen"],["notchosen","chosen"]]) array([['chosen','chosen'], ['chosen','chosen']],dtype='2.np.where(condition)
只有条件(condition),没有x和y,则输出满足条件(即非0)元素的坐标(等价于numpy.nonzero)。这里的坐标以tuple的形式给出,通常原数组有多少维,输出的tuple中就包含几个数组,分别对应符合条件元素的各维坐标。
>>>a=np.array([2,4,6,8,10]) >>>np.where(a>5)#返回索引 (array([2,3,4]),) >>>a[np.where(a>5)]#等价于a[a>5] array([6,8,10]) >>>np.where([[0,1],[1,0]]) (array([0,1]),array([1,0]))上面这个例子条件中[[0,1],[1,0]]的真值为两个1,各自的第一维坐标为[0,1],第二维坐标为[1,0]。
下面看个复杂点的例子:
>>>a=np.arange(27).reshape(3,3,3) >>>a array([[[0,1,2], [3,4,5], [6,7,8]], [[9,10,11], [12,13,14], [15,16,17]], [[18,19,20], [21,22,23], [24,25,26]]]) >>>np.where(a>5) (array([0,0,0,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2]), array([2,2,2,0,0,0,1,1,1,2,2,2,0,0,0,1,1,1,2,2,2]), array([0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2])) #符合条件的元素为 [6,7,8]], [[9,10,11], [12,13,14], [15,16,17]], [[18,19,20], [21,22,23], [24,25,26]]]所以np.where会输出每个元素的对应的坐标,因为原数组有三维,所以tuple中有三个数组。
需要注意的一点是,输入的不能直接是list,需要转为array或者为array才行。比如range(10)和np.arange(10)后者返回的是数组,使用np.where才能达到效果。
到此这篇关于np.where()[0]和np.where()[1]的具体使用的文章就介绍到这了,更多相关np.where()[0]和np.where()[1]内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。