详解Python中,()函数的用法

  

<强>()的地方用法

  

首先强调一下,在()函数对于不同的输入,返回的只是不同的。

  

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中,()函数的用法