Maison >développement back-end >Tutoriel Python >Comment effectuer efficacement des opérations d'union multi-tableaux avec « logical_or » de NumPy ?

Comment effectuer efficacement des opérations d'union multi-tableaux avec « logical_or » de NumPy ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-07 15:15:14327parcourir

How to Efficiently Perform Multi-Array Union Operations with NumPy's `logical_or`?

Numpy logical_or pour les opérations d'union multi-tableaux

La fonction logical_or de Numpy opère sur des paires de tableaux, ce qui soulève la question de savoir comment combiner efficacement plusieurs tableaux pour les opérations d'union (de même pour logical_and et les intersections).

Pendant que logical_or lui-même n'accepte que deux arguments, il peut être enchaîné :

x = np.array([True, True, False, False])
y = np.array([True, False, True, False])
z = np.array([False, False, False, False])
result = np.logical_or(np.logical_or(x, y), z)
# result: [ True,  True,  True,  False]

Une approche plus généralisée consiste à utiliser réduire :

result = np.logical_or.reduce((x, y, z))
# result: [ True,  True,  True,  False]

Cette méthode peut être appliquée aux deux tableaux multidimensionnels et des tuples de tableaux 1D. De plus, functools.reduce de Python peut être utilisé de la même manière :

result = functools.reduce(np.logical_or, (x, y, z))
# result: [ True,  True,  True,  False]

Pour plus de commodité, Numpy fournit any, qui effectue essentiellement une réduction OU logique le long d'un axe :

result = np.any((x, y, z), axis=0)
# result: [ True,  True,  True,  False]

Similaire les principes s'appliquent à logical_and et à d'autres opérateurs logiques, à l'exception de logical_xor, qui n'a pas de fonction all/any-type correspondante.

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!

Déclaration:
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