Per esempio, cercando di dare un senso a questi risultati:Quali sono le regole per confrontare gli array numpy usando ==?
>>> x
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> (x == np.array([[1],[2]])).astype(np.float32)
array([[ 0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 1., 0., 0., 0., 0., 0., 0., 0.]], dtype=float32)
>>> (x == np.array([1,2]))
False
>>> (x == np.array([[1]])).astype(np.float32)
array([[ 0., 1., 0., 0., 0., 0., 0., 0., 0., 0.]], dtype=float32)
>>> (x == np.array([1])).astype(np.float32)
array([ 0., 1., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32)
>>> (x == np.array([[1,3],[2]]))
False
>>>
Che cosa sta succedendo qui? Nel caso di [1], confronta 1 con ciascun elemento di x e aggrega il risultato in una matrice. Nel caso di [[1]], stessa cosa. È facile capire che cosa accadrà per forme di array specifiche semplicemente sperimentando sul repl. Ma quali sono le regole di base in cui entrambe le parti possono avere forme arbitrarie?