Например, пытаясь понять смысл этих результатов:Каковы правила сравнения массивов numpy с использованием ==?
>>> 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
>>>
Что здесь происходит? В случае [1] он сравнивает 1 с каждым элементом x и агрегирует результат в массиве. В случае [[1]] то же самое. Легко понять, что будет происходить для конкретных форм массива, просто экспериментируя на repl. Но каковы основные правила, в которых обе стороны могут иметь произвольные формы?