Замена элементов матрицы Python

Обновлено: 03.04.2025


Индекс массива NumPy начинается с «0», как и в случае обычного массива Python.

Вывод будет

Если вы хотите извлечь часть (несколько элементов) этого массива NumPy, вы можете использовать приведенный ниже синтаксис

Если вы печатаете значения массива part_arr, вывод будет

То есть 5-е значение не возвращается, будут возвращены только значения с индексами 2, 3 и 4.

Если вы хотите извлечь часть массива, но с промежутком, скажем, в 2 элемента, вы можете сделать это, используя приведенный ниже синтаксис

Если вы напечатаете значения массива skip_arr, вывод будет

Пожалуйста, следуйте приведенным ниже инструкциям, чтобы решить следующие проблемы, используя метод нарезки индекса массива:

Перестановка элементов массива

(1) Определите массив NumPy с именем my_orig_arr, содержащий следующие элементы (1, 15, 3, 9, 26, 7, 89, 12)

(2) Переверните элементы приведенного выше массива, используя приведенный ниже синтаксис, и сохраните результат в переменной с именем my_rev_arr

(3) Теперь распечатайте этот массив my_rev_arr, который вы получили выше, чтобы увидеть его значения

Замена выбранных элементов массива NumPy определенным значением

Создайте новый массив my_orig_arr2 со следующими элементами (2, 9, 17, 13, 1, 4, 20, 57).

Скажем, вы хотите заменить несколько элементов (скажем, от индекса 2 до 5) указанного выше массива NumPy my_orig_arr2 на значение -6 , вы можете сделать это, выполнив следующие шаги:

Распечатайте этот массив NumPy my_orig_arr2, чтобы увидеть его значения (обратите внимание, что будут заменены только значения с индексами 2, 3, 4, а не значение 5-го индекса)

Помните, что это возможно только в массиве NumPy, если вы попытаетесь сделать это с обычным массивом Python, вы получите сообщение об ошибке.

(1) Создайте обычный массив Python

arr здесь — обычный массив Python.

(2) Попробуйте заменить некоторые из его значений значением, скажем, -3, вы получите сообщение об ошибке

Извлечение фрагмента (части) массива NumPy

Чтобы извлечь фрагмент (часть) массива NumPy, выполните следующие действия:

(1) Определите массив NumPy с именем apple со значениями (1, 8, 23, 3, 18, 91, 7, 15)

(2) Извлеките часть этого массива NumPy apple из индексов с 1 по 4 (используя приведенный ниже синтаксис) и сохраните его в переменной apple_slice

(3) Распечатайте массив apple_slice, используя функцию print(), чтобы увидеть его значения

(4) Распечатайте массив apple с помощью функции print(), чтобы убедиться, что его значения не повреждены

Если вы измените (замените) значение в этом фрагменте ( массиве apple_slice ), соответствующее значение также будет изменено в его родительском массиве apple .

Пожалуйста, выполните следующие действия, чтобы убедиться в этом самостоятельно.

(1) Замените 2-й элемент массива apple_slice значением, скажем, 99999

помните, что второй элемент будет иметь индекс "1"

(3) Распечатайте массив apple_slice, используя функцию print(), чтобы увидеть его значения, 2-й элемент теперь должен быть 99999

(4) Распечатайте массив apple, используя функцию print(), чтобы увидеть его значения, соответствующее исходное значение в родительском массиве apple также должно быть изменено на 99999

Исходный (родительский) массив, из которого был извлечен фрагмент, также изменяется при изменении значения фрагмента.

Если вы не хотите, чтобы исходные (родительские) значения массива изменялись при изменении значений его среза, вы можете создать срез с помощью функции copy() в синтаксисе кода среза

  • Предположим, вы не хотите, чтобы значения вашего родительского (исходного) массива изменялись при изменении значений его среза. Этого можно добиться, используя функцию copy() в предыдущем синтаксисе кода для создания среза.

Пожалуйста, выполните следующие действия:

(1) Создайте новый фрагмент из массива яблок, используя функцию copy() в синтаксисе, как показано ниже:

(2) Замените 2-й элемент массива apple_slice_new значением, скажем, 222222

помните, что второй элемент будет иметь индекс "1"

(3) Распечатайте массив слайсов apple_slice_new, используя функцию print(), чтобы увидеть его значения, теперь 2-й элемент должен быть 222222

(4) Распечатайте родительский массив apple с помощью функции print(), чтобы увидеть его значения, родительский массив apple должен быть неповрежденным (никакие значения не изменены).

Исходный (родительский) массив, из которого срез был извлечен с помощью функции copy(), не изменяется при изменении значения среза.

В этом руководстве рассказывается, как заменить значения внутри массива NumPy в Python.

NumPy заменяет значения функцией numpy.clip()

Если нам нужно заменить все значения, превышающие определенный порог в массиве NumPy, мы можем использовать функцию numpy.clip(). Мы можем указать верхний и нижний пределы массива, используя функцию numpy.clip(). Функция numpy.clip() возвращает массив, в котором элементы меньше указанного предела заменяются наименьшим пределом.Элементы, превышающие указанный предел, заменяются наибольшим пределом. В следующем примере кода показано, как заменить значения внутри массива NumPy функцией numpy.clip().

Мы заменили значения больше 5 внутри массива массива NumPy функцией np.clip() в приведенном выше коде. Сначала мы создали массив NumPy с помощью функции np.array(). Затем мы обрезали массив, указав ограничение от 0 до 5 внутри функции np.clip(), и сохранили результат в массиве результатов.

NumPy заменяет значения функциями numpy.minimum() и numpy.maximum()

Мы также можем использовать функции numpy.minimum() и numpy.maximum() для замены значений в массиве за пределами указанного предела. Функция numpy.maximum() используется для замены значений меньше нижнего предела на нижний предел. И функция numpy.minimum() используется для замены значений, превышающих верхний предел, на верхний предел. Функция numpy.maximum() принимает массив и наименьшее возможное значение в качестве входных параметров. Функция numpy.minimum() принимает в качестве входных параметров массив и максимально возможное значение. См. следующий пример кода.

Мы заменили значения больше 5 на 5 с помощью функции np.minimum(), а значения меньше 0 на 0 с помощью функции np.maximum(). Мы сохранили результат этих операций внутри массива result2.

NumPy заменяет значения методом индексации массива в Python

Самый простой способ достичь той же цели, что и в предыдущих двух методах, — это использовать индексацию массива в Python. Мы можем легко заменить значения больше или меньше определенного порога с помощью метода индексации массива в NumPy. Вместо создания нового массива, как в предыдущих двух методах, этот метод изменяет содержимое исходного массива.

Мы заменили все значения внутри массива больше 5 на 5, используя array[array > 5] = 5 в Python.

Статьи DelftStack написаны такими же фанатами программного обеспечения, как и вы. Если вы также хотите внести свой вклад в DelftStack, написав платные статьи, вы можете посетить страницу «Написать для нас».

сообщить об этом объявлении

Списки в Python — это структуры данных, используемые для хранения элементов нескольких типов вместе в одном списке. Используя список, мы можем хранить несколько типов данных, таких как строковые значения, целые числа, числа с плавающей запятой, наборы, вложенные списки и т. д. Элементы хранятся в квадратных скобках '[ ]'. Это изменяемые типы данных. , т. е. их можно изменить даже после того, как они были созданы. Мы можем получить доступ к элементам списка, используя индексирование. В этой статье мы рассмотрим 7 эффективных способов замены элементов в списке Python.

Как заменить элемент в списке Python

Списки — это привлекательные и универсальные структуры данных. Как упоминалось выше, списки — это изменяемые типы данных. Даже после того, как список создан, мы можем вносить изменения в элементы списка. Это свойство списков делает работу с ними очень простой. Здесь мы рассмотрим 7 различных способов замены элемента в списке в Python.

1. Использование индексации списка

К элементам списка можно легко получить доступ с помощью индексации. Это самый простой и простой способ доступа к элементам списка. Поскольку все элементы внутри списка хранятся в упорядоченном виде, мы можем последовательно извлекать его элементы. Первый элемент хранится в индексе 0, а последний элемент хранится в индексе 'len(list)-1'.

Возьмем список с именем 'my_list', в котором хранятся названия цветов. Теперь, если мы хотим заменить первый элемент в списке с "красного" на "черного", мы можем сделать это с помощью индексации. Мы присваиваем элементу, хранящемуся в 0-м индексе, новое значение. Тогда напечатанный список будет содержать замененный элемент.

2. Цикл с использованием цикла for

Мы также можем выполнить цикл for для перебора элементов списка. Когда внутри цикла for выполняется определенное условие, мы заменяем этот элемент списка с помощью индексации.

Мы возьмем тот же 'my_list', что и в приведенном выше примере. Затем мы запустим цикл for для длины списка 'my_list'. Внутри цикла мы поместили условие, что, когда элемент списка равен 'Orange', мы заменим элемент в этот индекс с 'Black'. Затем, после завершения цикла for, мы напечатаем этот список.

В результате выводится список с замененным значением.

3. Использование понимания списка

Понимание списков в Python — это компактный фрагмент кода. Используя понимание списка, мы можем генерировать новые последовательности из уже существующих последовательностей.Вместо того, чтобы писать целый блок кода для выполнения цикла for или цикла if-else, мы можем написать для них одну строку кода.

Синтаксис для понимания списка:

Он состоит из выражения, которое должно быть напечатано в новом списке, оператора цикла и исходного списка, из которого будут получены новые значения.

Мы будем использовать генератор списка, чтобы добавить строку ‘ color’ ко всем элементам списка my_list. Мы заменим старые значения обновленными значениями.

Список с замененными значениями:

4. С картой и лямбда-функцией

Map()  – это встроенная в Python функция, с помощью которой мы можем перебирать итерируемую последовательность без необходимости писать оператор цикла.

Синтаксис карты:

Здесь каждое значение внутри итерируемого объекта будет передано в функцию, а функция map() выведет возвращаемое значение внутренней функции. Внутри функции map() мы взяли лямбда-функцию в качестве первого аргумента.

Лямбда-функция — это анонимная функция, содержащая однострочное выражение. У него может быть любое количество аргументов, но вычисляться может только одно выражение. Здесь лямбда-функция добавит строку ‘ color’ ко всем элементам, присутствующим в списке, и вернет новое значение. Затем с помощью функции list() мы преобразуем объект карты, возвращаемый функцией map(), в список.

Вывод:

Если мы хотим заменить определенный элемент в списке, код для этого будет таким:

Мы использовали метод replace() для замены значения 'Orange' из my_list на 'Black.'< /em> Вывод:

5. Выполнение цикла while

У нас также может быть цикл while, чтобы заменить элемент в списке в Python. Мы возьмем переменную ‘i’, которая изначально будет равна нулю. Цикл while должен выполняться, пока значение 'i' меньше длины списка my_list. Мы будем использовать replace() метод для замены элемента списка 'Gray' на 'Green'. Переменная 'i' должна увеличиваться в конце цикла.

Обновленный список:

6. Использование нарезки списка

Мы также можем выполнять нарезку внутри списка. Использование срезов позволяет нам получить доступ только к определенной части списка.

Синтаксис списка:

С помощью нарезки списка мы можем заменить данный элемент внутри списка. Сначала мы сохраним индекс заменяемого элемента в переменной с именем index. Затем, используя срез списка, мы заменим этот элемент новым значением Green.

Вывод:

7. Замена элемента списка с помощью numpy

Мы также можем заменить элемент списка с помощью библиотеки Python numpy. Во-первых, мы преобразуем список в массив numpy. Затем, используя функцию numpy where(), мы указываем условие, согласно которому мы заменим значение. Мы заменим значение «Серый» на «Зеленый». В противном случае значение будет таким же.

Вывод:

Часто задаваемые вопросы, связанные с заменой элемента в списке в Python

Используя понимание списка, функцию map-lambda, функцию замены и т. д., мы можем выполнять замену элементов списка на месте.

Это суммирует пять различных способов замены элемента в списке. Если у вас есть какие-либо вопросы, сообщите нам об этом в комментариях ниже.

Значения серии динамически заменяются другими значениями.

Это отличается от обновления с помощью .loc или .iloc , которые требуют указать место для обновления с некоторым значением.

Параметры to_replace str, regex, list, dict, Series, int, float или None

Как найти значения, которые будут заменены.

числовой, str или регулярное выражение:

  • числовой: числовые значения, равные to_replace, будут заменены значением

  • str: строка, точно соответствующая to_replace, будет заменена значением

  • регулярное выражение: регулярное выражение, соответствующее to_replace, будет заменено значением

список строк, регулярных выражений или чисел:

  • Во-первых, если to_replace и value являются списками, они должны быть одинаковой длины.

  • Во-вторых, если regex=True, все строки в обоих списках будут интерпретироваться как регулярные выражения, в противном случае они будут совпадать напрямую. Это не имеет большого значения для ценности, так как есть только несколько возможных регулярных выражений замены, которые вы можете использовать.

  • правила str, regex и numeric применяются, как указано выше.

  • Слова можно использовать для указания разных значений замены для разных существующих значений. Например, заменяет значение «a» на «b» и «y» на «z». Чтобы использовать словарь таким образом, параметр value должен быть None .

  • Для DataFrame словарь может указывать, что разные значения должны быть заменены в разных столбцах.Например, ищет значение 1 в столбце «a» и значение «z» в столбце «b» и заменяет эти значения тем, что указано в value . В этом случае параметр value не должен быть None. Вы можете рассматривать это как частный случай передачи двух списков, за исключением того, что вы указываете столбец для поиска.

  • Вложенные словари DataFrame, например, > , читаются следующим образом: найдите в столбце "a" значение "b" и замените его на NaN. Параметр value должен быть None, чтобы использовать вложенный словарь таким образом. Вы также можете вкладывать регулярные выражения. Обратите внимание, что имена столбцов (ключи словаря верхнего уровня во вложенном словаре) не могут быть регулярными выражениями.

  • Это означает, что аргумент регулярного выражения должен быть строкой, скомпилированным регулярным выражением или списком, dict, ndarray или серией таких элементов. Если значение также равно None, это должен быть вложенный словарь или серия.

См. раздел примеров для примеров каждого из них.

скалярное значение, словарь, список, строка, регулярное выражение, по умолчанию нет

Значение для замены любых значений, совпадающих с to_replace. Для DataFrame можно использовать словарь значений, чтобы указать, какое значение использовать для каждого столбца (столбцы, не входящие в словарь, не будут заполнены). Допускаются также регулярные выражения, строки и списки или словари таких объектов.

inplace bool, по умолчанию False

Если True, операция выполняется на месте и возвращается None.

ограничение int, по умолчанию нет

Максимальный размер промежутка для заполнения вперед или назад.

regex bool или те же типы, что и to_replace , по умолчанию False

Интерпретировать ли to_replace и/или значение как регулярные выражения. Если это True, то to_replace должен быть строкой. Кроме того, это может быть регулярное выражение или список, словарь или массив регулярных выражений, и в этом случае to_replace должно быть None .

метод

Метод, используемый при замене, когда to_replace является скаляром, списком или кортежем, а значение равно None .

Изменено в версии 0.23.0: добавлено в DataFrame.

Объект после замены.

Если регулярное выражение не является логическим, а to_replace не равно None .

Если to_replace не является скаляром, массивом, dict или None

Если to_replace – это словарь, а значение – не список, dict, ndarray или Series

Если to_replace имеет значение None и регулярное выражение не может быть скомпилировано в регулярное выражение или является списком, dict, ndarray или Series.

При замене нескольких объектов bool или datetime64, когда аргументы to_replace не соответствуют типу заменяемого значения

Если в to_replace и value передается список или ndarray, но они имеют разную длину.

Заменить значения на основе логического условия.

Простая замена строки.

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

Регулярные выражения заменяют только строки. Это означает, что вы не можете предоставить, например, регулярное выражение, соответствующее числам с плавающей запятой, и ожидать совпадения столбцов в вашем фрейме, имеющих числовой тип dtype. Однако, если эти числа с плавающей запятой являются строками, вы можете сделать это.

У этого метода есть множество опций. Вам предлагается поэкспериментировать и поиграть с этим методом, чтобы понять, как он работает.

Когда dict используется в качестве значения to_replace, ключ(и) в dict являются частью to_replace, а значения в dict являются параметром значения.

Читайте также: