Explication détaillée de l'utilisation de la fonction Where() en Python

小云云
Libérer: 2018-03-29 13:09:01
original
12256 Les gens l'ont consulté

Cet article vous présente principalement en détail l'utilisation de la fonction Where() en Python. L'éditeur pense que c'est plutôt bon. Maintenant, je vais le partager avec vous et vous donner une référence, j'espère que cela pourra vous aider.

Utilisation de Where()

Tout d'abord, permettez-moi de souligner que la fonction Where() ne renvoie que des valeurs différentes pour différentes entrées.

1 Lorsque le tableau est un tableau à une dimension, la valeur renvoyée est un index à une dimension, il n'y a donc qu'un seul ensemble de tableaux d'index

2 Lorsque le tableau est un tableau à deux dimensions tableau dimensionnel, la valeur du tableau qui remplit les conditions. Ce qui est renvoyé est l'indice de position de la valeur, il y aura donc deux ensembles de tableaux d'index pour représenter la position de la valeur

, comme


>>>b=np.arange(10)
>>>b
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>>np.where(b>5)
 (array([6, 7, 8, 9], dtype=int64),)

>>>a=np.reshape(np.arange(20),(4,5))
>>>a 
array([[ 0, 1, 2, 3, 4],
    [ 5, 6, 7, 8, 9],
    [10, 11, 12, 13, 14],
    [15, 16, 17, 18, 19]])
>>>np.where(a>10)
(array([2, 2, 2, 2, 3, 3, 3, 3, 3], dtype=int64),
 array([1, 2, 3, 4, 0, 1, 2, 3, 4], dtype=int64))
Copier après la connexion

pour numpy Une introduction à l'explication dans la bibliothèque standard :


numpy.where(condition[, x, y])
Copier après la connexion

Basé sur condition , la valeur de retour provient de x ou y.

if.

< table style="height: 263px; width: 664px">Paramètres :
参数:

condition : 数组,bool值

When True, yield x, otherwise yield y.

x, y : array_like, 可选

x与y的shape要相同,当condition中的值是true时返回x对应位置的值,false是返回y的

返回值:

out : ndarray or tuple of ndarrays

①如果参数有condition,x和y,它们三个参数的shape是相同的。那么,当condition中的值是true时返回x对应位置的值,false是返回y的。

②如果参数只有condition的话,返回值是condition中元素值为true的位置索引,切是以元组形式返回,元组的元素是ndarray数组,表示位置的索引

condition : tableau, valeur bool


Lorsque vrai, donne x, sinon donne y.

>>> np.where([[True, False], [True, True]],
...     [[1, 2], [3, 4]],
...     [[9, 8], [7, 6]])
array([[1, 8],
    [3, 4]])
>>>
>>> np.where([[0, 1], [1, 0]])
(array([0, 1]), array([1, 0]))
>>>
>>> x = np.arange(9.).reshape(3, 3)
>>> np.where( x > 5 )
(array([2, 2, 2]), array([0, 1, 2]))
>>> x[np.where( x > 3.0 )]        # Note: result is 1D.
array([ 4., 5., 6., 7., 8.])
>>> np.where(x < 5, x, -1)        # Note: broadcasting.
array([[ 0., 1., 2.],
    [ 3., 4., -1.],
    [-1., -1., -1.]])
Find the indices of elements of x that are in goodvalues.

>>>
>>> goodvalues = [3, 4, 7]
>>> ix = np.in1d(x.ravel(), goodvalues).reshape(x.shape)
>>> ix
array([[False, False, False],
    [ True, True, False],
    [False, True, False]], dtype=bool)
>>> np.where(ix)
(array([1, 1, 2]), array([0, 1, 1]))
Copier après la connexion
x, y : array_like, facultatif

Les formes de x et y doivent être les mêmes, et lorsque la valeur dans la condition est vraie, renvoie le x correspondant La valeur de la position, false renvoie y< th>Valeur de retour :
out : ndarray ou tuple de ndarrays

①Si les paramètres incluent la condition, x et y, les formes de leurs trois paramètres sont les mêmes. Ensuite, lorsque la valeur de la condition est vraie, la valeur correspondant à x est renvoyée, et si fausse, y est renvoyée.

② Si ​​le paramètre est uniquement une condition, la valeur de retour est l'index de position où la valeur de l'élément dans la condition est vraie. Elle est renvoyée sous la forme d'un tuple. Les éléments du tuple sont des tableaux ndarray, indiquant. l'index de la position

< /td>

Exemple de code pour deux méthodes


La première utilisation

np.where(conditions,x,y)
import numpy as np
&#39;&#39;&#39;
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([True,False,True,True,False])
result = [(x if c else y)
     for x,y,c in zip(xarr,yarr,zarr)]
print(result)

#where()函数处理就相当于上面那种方案

result = np.where(zarr,xarr,yarr)
print(result)

&#39;&#39;&#39;
#发现个有趣的东西
# #处理2组数组
# #True and True = 0
# #True and False = 1
# #False and True = 2
# #False and False = 3

cond2 = np.array([True,False,True,False])
cond1 = np.array([True,True,False,False])
#第一种处理 太长太丑
result = []
for i in range(4):
  if (cond1[i] & cond2[i]):  result.append(0);
  elif (cond1[i]):  result.append(1);
  elif (cond2[i]):  result.append(2);
  else : result.append(3);
print(result)
#第二种 直接where() 很快很方便
result = np.where(cond1 & cond2,0,np.where(cond1,1,np.where(cond2,2,3)))
print(result)
#第三种 更简便(好像这跟where()函数半毛钱的关系都没有
result = 1*(cond1 & -cond2)+2*(cond2 & -cond1)+3*(-(cond1 | cond2)) (没想到还可以这么表达吧)
print(result)
Copier après la connexion

if (les conditions sont établies) :

Le tableau devient x

sinon :

Le tableau devient y


x = np.arange(16)
print(x[np.where(x>5)])
#输出:(array([ 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], dtype=int64),)

x = np.arange(16).reshape(-1,4)
print(np.where(x>5))

#(array([1, 1, 2, 2, 2, 2, 3, 3, 3, 3], dtype=int64), array([2, 3, 0, 1, 2, 3, 0, 1, 2, 3], dtype=int64))
#注意这里是坐标是前面的一维的坐标,后面是二维的坐标
Copier après la connexion


La deuxième utilisation
ix = np.array([[False, False, False],
    [ True, True, False],
    [False, True, False]], dtype=bool)
print(np.where(ix))
#输出:(array([1, 1, 2], dtype=int64), array([0, 1, 1], dtype=int64))
Copier après la connexion

où(conditions ) Équivaut à donner l'indice du tableau

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal