<强>()的地方用法强>
首先强调一下,在()函数对于不同的输入,返回的只是不同的。
1当数组是一维数组时,返回的值是一维的索引,所以只有一组索引数组
2当数组是二维数组时,满足条件的数组值返回的是值的位置索引,因此会有两组索引数组来表示值的位置
例如
在祝辞祝辞b=np.arange (10) 在祝辞祝辞b 数组([0,1,2,3,4,5,6,7,8,9)) 在祝辞祝辞np.where (b> 5) (数组((6、7、8、9),dtype=int64),) 在祝辞祝辞=np.reshape (np.arange (20), (4、5)) 在祝辞祝辞 阵列([[0,1,2,3,4), (5、6、7、8、9), (10、11、12、13、14), (15、16、17、18 19]]) 在祝辞祝辞np.where (a> 10) (数组([2、2、2、2、3、3、3、3、3],dtype=int64), 数组([1、2、3、4、0,1,2,3,4],dtype=int64)) >之前对numpy标准库里的解释做一个介绍:
numpy。(条件(x, y))基于条件状况,返回值来自x或y者。
如果。
参数:
condition :数组,bool值
真实时,油品收率x, y否则油品收率。
x, y : array_like,可选
x与y的形状要相同,当条件中的值是真实时返回x对应位置的值,错误是返回y的
返回值:out : ndarrays ndarray或元组
①如果参数有条件,x和y,它们三个参数的形状是相同的。那么,当条件中的值是真实时返回x对应位置的值,错误是返回y的。
②如果参数只有条件的话,返回值是条件中元素值为true的位置索引,切是以元组形式返回,元组的元素是ndarray数组,表示位置的索引
在在在np。在哪里([[真,假],[真,真]], …[[1、2],[3,4]], …[[9 8],[7,6]]) 阵列([[1 8] [3,4]]) 在在在 在在在np。在哪里([[0,1],[1,0]]) (数组([0,1]),数组((1,0))) 在在在 在在在x=np.arange (9)。重塑(3) 在在在np。在(x比;5) (数组([2 2 2]),数组((0,1,2))) 在在在x (np。在(x比;3.0)]#注:结果是1 d。 数组([4。5。6。7。8。) 在在在np。在(x & lt;5 x 1) #注:广播。 数组([[0。1。2), (3。4。1。) (1。1。, 1]])。 找到的元素的索引x goodvalues。 在在在 在在在goodvalues=(3、4、7) 在在在第九=np.in1d (x.ravel (), goodvalues) .reshape (x.shape) 在在在9 数组([[假,假,假], 真的,真的,假的, [假,真、假]],dtype=bool) 在在在np.where(第九) (数组([1,2]),数组((0,1,1))) >之前<强>两种方法的示例代码强>
第一种用法
np.where(条件,x, y)
如果(condituons成立):
数组变x
:
数组变y
进口numpy np “‘ x=np.random.randn (4, 4) print (np.where (x> 0 2 2)) #试试效果 xarr=np.array ([1.1, 1.2, 1.3, 1.4, 1.5)) yarr=np.array ([2.1, 2.2, 2.3, 2.4, 2.5)) zarr=np.array((真的,假的,真的,真的,假的)) 结果=[(x如果其他c y) 在邮政为x, y, c (xarr、yarr zarr)) 打印(结果) #()函数处理就相当于上面那种方案 结果=np.where (zarr xarr yarr) 打印(结果) “‘ #发现个有趣的东西 # #处理2组数组 # #真正的和真正的=0 # #真假=1 # #假和真=2 # #假,假=3 cond2=np.array((真的,假的,真的,假的)) cond1=np.array([真,真,假,假]) #第一种处理太长太丑 结果=[] 因为我在范围(4): 如果(cond1(我),cond2[我]):result.append (0); elif (cond1[我]):result.append (1); elif (cond2[我]):result.append (2); 其他:result.append (3); 打印(结果) #第二种直接()很快很方便 结果=np。在哪里(cond1,cond2 0 np.where (cond1 1 np.where (cond2 2 3))) 打印(结果) #第三种更简便(好像这跟在()函数半毛钱的关系都没有 结果=1 * (cond1,-cond2) + 2 * (cond2,-cond1) + 3 * (- (cond1 | cond2))(没想到还可以这么表达吧) 打印(结果) >之前第二种用法
,(条件)
相当于给出数组的下标
详解Python中,()函数的用法