リストとNumPy配列のブール演算とビット演算の動作の違いを説明するものは何ですか?
次の例に示すように、Python で&vs andを適切に使用する方法について混乱しています。
mylist1 = [True, True, True, False, True]
mylist2 = [False, True, False, True, False]
>>> len(mylist1) == len(mylist2)
True
# ---- Example 1 ----
>>> mylist1 and mylist2
[False, True, False, True, False]
# I would have expected [False, True, False, False, False]
# ---- Example 2 ----
>>> mylist1 & mylist2
TypeError: unsupported operand type(s) for &: 'list' and 'list'
# Why not just like example 1?
>>> import numpy as np
# ---- Example 3 ----
>>> np.array(mylist1) and np.array(mylist2)
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
# Why not just like Example 4?
# ---- Example 4 ----
>>> np.array(mylist1) & np.array(mylist2)
array([False, True, False, False, False], dtype=bool)
# This is the output I was expecting!
この回答とこの答えは私がそれを理解する助けandブーリアン演算であるが、&ビット演算です。
概念をよりよく理解するためにビット演算について読みましたが、上記の4つの例を理解するためにその情報を使用するのに苦労しています。
例4では、希望する出力が得られたので問題ありませんが、andvs をいつ、どのように、なぜ使用する必要があるかについてはまだ混乱してい&ます。リストとNumPy配列がこれらの演算子で異なる動作をするのはなぜですか?
ブール演算とビット演算の違いを理解して、リストとNumPy配列を異なる方法で処理する理由を説明できる人はいますか?
mylist1 and mylist2、と同じ結果を出力しませんmylist2 and mylist1。
np.bitwise_and()andnp.logical_and()と友達がいます。