Почему делает присвоение для дважды нарезанных массивов numpy не, работают?

Я не использую очень строгий смысл венгерской записи, но я действительно использую ее экономящий для некоторых общих пользовательских объектов помочь определить их, и также я склонен снабжать префиксом gui объекты управления тип управления, которое они. Например, labelFirstName, textFirstName, и buttonSubmit.

10
задан Philipp der Rautenberg 6 November 2009 в 13:43
поделиться

4 ответа

Похоже, вы просто не можете выполнить присваивание с помощью такого двойного среза.

Это работает. хотя:

a[numpy.where(a==1)[0][1:]] = 3
7
ответ дан 3 December 2019 в 18:34
поделиться

Это связано с тем, как работает необычное индексирование. Подробное объяснение здесь . Это делается таким образом, чтобы разрешить модификацию на месте с причудливой индексацией (например, a [x> 3] * = 2 ). Следствием этого является то, что вы не можете присвоить двойной индекс, как вы нашли. Модное индексирование всегда возвращает копию, а не представление.

10
ответ дан 3 December 2019 в 18:34
поделиться

Потому что часть a [a == 1] на самом деле не является срезом. Создает новый массив.

4
ответ дан 3 December 2019 в 18:34
поделиться

Это делает то, что вы хотите

a[2:][a[2:]==1]=3
0
ответ дан 3 December 2019 в 18:34
поделиться
Другие вопросы по тегам:

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