ホームページ >バックエンド開発 >Python チュートリアル >Python でリストと NumPy 配列を使用する場合、「and」と「&」はどのように異なりますか?

Python でリストと NumPy 配列を使用する場合、「and」と「&」はどのように異なりますか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-26 05:22:14967ブラウズ

How Do `and` and `&` Differ When Used with Lists and NumPy Arrays in Python?

リストと NumPy 配列に対するブール演算とビット演算の動作を理解する

はじめに

Python の「and」演算子と「&」演算子リストと NumPy 配列で使用した場合の動作が異なります。この違いは、特にビット単位の演算に慣れていない場合には、困惑する可能性があります。

ブール演算とビット単位の演算

'and' は、両方の演算が行われているかどうかをテストする論理演算子です。そのオペランドのうちのは論理的に True です。一方、「&」は、オペランドに対してビット単位の演算 (AND、OR、XOR など) を実行するビット単位の演算子です。

リストの動作

リストで使用すると、「and」はリスト項目をブール値として評価します。すべての項目が True の場合、「and」は True と評価されます。それ以外の場合は、False と評価されます。例:

mylist1 = [True, True, True, False, True]
mylist2 = [False, True, False, True, False]

mylist1 and mylist2  # Output: [False, True, False, True, False]

'&' ただし、リストのビット単位の演算はサポートされていません。リストには任意の要素が含まれるため、TypeError が発生します。

mylist1 & mylist2  # Output: TypeError: unsupported operand type(s)

NumPy 配列での動作

NumPy 配列では、動作が異なります。 NumPy 配列はベクトル化された計算をサポートしています。つまり、複数の要素に対して一度に操作を実行できます。

配列には単純なブール値がないため、長さが 1 を超える NumPy 配列では「and」を使用できません。

import numpy as np

np_array1 = np.array(mylist1)
np_array2 = np.array(mylist2)

np_array1 and np_array2  # Output: ValueError: The truth value of an array with more than one element is ambiguous

ただし、「&」をブール値の NumPy 配列で使用して、ビット単位の AND 演算を実行できます。要素ごとに。

np_array1 & np_array2  # Output: array([False, True, False, False, False], dtype=bool)

概要

  • ブール値を比較するか論理式を評価するには、「and」を使用します。
  • 「' を使用する」 &' は、整数またはブール値の NumPy に対してビット単位の演算を実行します。配列。
  • リストには任意の要素が含まれる可能性があるため、'&' を使用して結合することはできません。
  • NumPy 配列は、'&' を使用したベクトル化されたビット単位の演算をサポートできますが、'and' の処理はリストとは異なります。それらのベクトル化された性質。

以上がPython でリストと NumPy 配列を使用する場合、「and」と「&」はどのように異なりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。