Я не могу прокомментировать полезность наличия отдельной функции удобства, которая переносит результат другого, но я могу прокомментировать where
vs nonzero
. В простейшем случае использования where
действительно совпадает с nonzero
.
>>> np.where(np.array([[0,4],[4,0]]))
(array([0, 1]), array([1, 0]))
>>> np.nonzero(np.array([[0,4],[4,0]]))
(array([0, 1]), array([1, 0]))
или
>>> a = np.array([[1, 2],[3, 4]])
>>> np.where(a == 3)
(array([1, 0]),)
>>> np.nonzero(a == 3)
(array([1, 0]),)
where
отличается от nonzero
в если вы хотите выбрать элементы из массива a
, если какое-либо условие True
и из массива b
, когда это условие False
.
>>> a = np.array([[6, 4],[0, -3]])
>>> b = np.array([[100, 200], [300, 400]])
>>> np.where(a > 0, a, b)
array([[6, 4], [300, 400]])
Опять же, я не могу объясните, почему они добавили функциональность nonzero
к where
, но это по крайней мере объясняет, как эти два разных.
EDIT: Исправлен первый пример ... моя логика была некорректной ранее
Вы можете создать его, используя Sprite.Create . У него есть параметр, который называется border.