В этом сообщении указана "функция", которую я хотел бы отключить.
Текущее поведение numpy:
>>> a = arange(10)
>>> a[a>5] = arange(10)
array([0, 1, 2, 3, 4, 5, 0, 1, 2, 3])
Причина, по которой это проблема: скажем, я хотел массивиметь два разных набора значений по обе стороны от точки останова (например, для создания «нарушенного степенного закона» или какой-либо другой простой кусочной функции).Я мог бы случайно сделать что-то вроде этого:
>>> x = empty(10)
>>> a = arange(10)
>>> x[a<=5] = 0 # this is fine
>>> x[a>5] = a**2 # this is not
# but what I really meant is this
>>> x[a>5] = a[a>5]**2
Первое поведение, x[a>5] = a**2
дает что-то, что я считаю нелогичным - формы левой и правой сторон не совпадают и справане скаляр, но NumPy позволяет мне сделать это назначение.Как указано в другом посте, x[5:]=a**2
не разрешено.
Итак, мой вопрос: есть ли способ заставить x[a>5] = a**2
поднять Exception
вместо выполнения задания?Я очень переживаю, что в моем коде скрыты опечатки, потому что я никогда раньше не подозревал такого поведения.