Каков ожидаемый эффект от того, где NumPy отрицательный?

Одна из причин может быть вызвана тем, что Array.Sort был разработан в .NET 1.0, у которого не было никаких дженериков.

2
задан equaeghe 18 January 2019 в 08:54
поделиться

1 ответ

Документация описывает where следующим образом:

Значения True указывают на то, что для вычисления ufunc в этой позиции, значения False указывают на то, чтобы оставить значение только в выходных данных.

Давайте попробуем пример, используя параметр out:

x = np.ones(3)
np.negative(np.array([4.,5.,6.]), where=np.array([False,True,False]), out=x)

Это устанавливает x в [1., -5., 1.] и возвращает то же самое.

Это имеет некоторый смысл, если вы поймете, что «оставить значение в выходных данных» буквально означает, что выходное значение «не волнует», а не «совпадает с входным» (последняя интерпретация заключалась в том, как прочитайте это тоже в первый раз).

Проблема возникает, когда вы указываете where, но не out. По-видимому, « ufunc machinery » (который не виден в реализации np.negative() ) создает пустой выходной выходной массив, то есть значения являются неопределенными. Таким образом, местоположения, в которых where равно False, будут иметь неинициализированные значения, которые могут быть чем угодно.

Мне кажется, это неправильно, но в прошлом году была опубликована проблема NumPy , которая была закрыта. Кажется маловероятным, что он изменится, поэтому вам придется обходить его (например, самостоятельно создавая выходной массив с помощью zeros).

0
ответ дан John Zwinck 18 January 2019 в 08:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: