Для a
(10,10) диапазона (100)
In [201]: np.nonzero(a>100)
Out[201]: (array([], dtype=int32), array([], dtype=int32))
nonzero
возвращает кортеж, с массивом для каждого измерения. Этот кортеж можно использовать для индексации всех элементов, где условие истинно.
Таким образом, вы можете проверить «пустой» nonzero
, посмотрев на длину одного из этих массивов.
len(np.nonzero(a>98)[0])==0
any
на булевой маске появляется проще, хотя в быстрых тестах, это на самом деле медленнее.
np.any(a>98)
MATLAB 'find' возвращает элементы, которые соответствуют. Обозначение numpy равно a[np.nonzero(a>100)]
или с использованием булевой маски непосредственно a[a>100]
.
Таким образом, моя новая номинация на быстрый isempty(find...))
выглядит так: len(a[...])==0
.
Я думаю, что вы в замешательстве - '__builtin __. Any (np.array ([0]))' is false, а также 'np.any (np.array ([0])). Это должно быть правдой. Чтобы увидеть странный краевой случай, рассмотрим, например, «a = нули ((3,4)); b = нули ((3,4)); b [0,0] = 1' – wim
Извините, я действительно запутался. Я ожидал, что 'np.any' будет ложным, который, как я думал, был тем, что вы хотели, и' __builtin __. Any', чтобы быть правдой, что я считал неправильным. Но все равно ложны. – abarnert