Как заменить элемент в матрице python
Перейти к содержимому

Как заменить элемент в матрице python

  • автор:

Как заменить элементы в массиве NumPy (3 примера)

Вы можете использовать следующие методы для замены элементов в массиве NumPy:

Метод 1: заменить элементы, равные некоторому значению

#replace all elements equal to 8 with a new value of 20 my_array[my_array == 8 ] = 20 

Способ 2: замена элементов на основе одного условия

#replace all elements greater than 8 with a new value of 20 my_array[my_array > 8 ] = 20 

Способ 3: замена элементов на основе нескольких условий

#replace all elements greater than 8 or less than 6 with a new value of 20 my_array[(my_array > 8 ) | (my_array < 6 )] = 20 

В следующих примерах показано, как использовать каждый метод на практике со следующим массивом NumPy:

import numpy as np #create array my_array = np.array([4, 5, 5, 7, 8, 8, 9, 12]) #view array print(my_array) [ 4 5 5 7 8 8 9 12] 

Метод 1: заменить элементы, равные некоторому значению

В следующем коде показано, как заменить все элементы массива NumPy, равные 8 , новым значением 20 :

#replace all elements equal to 8 with 20 my_array[my_array == 8 ] = 20 #view updated array print(my_array) [ 4 5 5 7 20 20 9 12] 

Способ 2: замена элементов на основе одного условия

В следующем коде показано, как заменить все элементы в массиве NumPy больше 8 новым значением 20 :

#replace all elements greater than 8 with 20 my_array[my_array > 8 ] = 20 #view updated array print(my_array) [ 4 5 5 7 8 8 20 20] 

Способ 3: замена элементов на основе нескольких условий

В следующем коде показано, как заменить все элементы в массиве NumPy больше 8 или меньше 6 новым значением 20 :

#replace all elements greater than 8 or less than 6 with a new value of 20 my_array[(my_array > 8 ) | (my_array < 6 )] = 20 #view updated array print(my_array) [20 20 20 7 8 8 20 20] 

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные операции в NumPy:

Ошибка сервера в приложении '/'.

Описание: На сервере возникла ошибка приложения. Текущая пользовательская настройка ошибок для этого приложения не позволяет удаленно просматривать сведения об ошибке данного приложения (из соображений безопасности). Однако, сведения можно просматривать в браузерах, запущенных на локальном сервере.

Сведения: Для разрешения просмотра сведений данного сообщения об ошибке на локальном сервере создайте тег в файле конфигурации "web.config", который находится в корневом каталоге текущего веб-приложения. В теге следует задать атрибут "mode" со значением "Off".

Примечания: Отображаемую в данный момент страницу ошибок можно заменить на пользовательскую страницу ошибок, изменив атрибут "defaultRedirect" тега конфигурации приложения таким образом, чтобы он содержал URL-адрес пользовательской страницы ошибок.

Замена элемента в списке по его индексу

В результате элемент с индексом i из последовательности sequence получит новое значение (заменится) на объект x .

Если индекс i отрицателен, то индекс будет считаться относительно конца последовательности sequence . В этом случае положительный индекс можно посчитать по формуле len(sequence) - i .

Обратите внимание, что -0 по-прежнему будет 0.

При попытке заменить значение элемента с индексом, превышающим длину последовательности len(sequence) поднимается исключение IndexError .

Эта операция поддерживаются изменяемыми типами последовательностей.

Примеры изменения элемента списка по индексу.

>>> x = [2, 5, 8, 11, 14, 17] >>> x[1] = 150 >>> x # [2, 150, 8, 11, 14, 17] >>> x[-1] = 100 >>> x # [2, 150, 8, 11, 14, 100] x = ['el_1', 'el_2', 'el_3'] >>> x[2] = 'lorem' >>> x # ['el_1', 'el_2', 'lorem'] # замена элемента неизменяемой # последовательности невозможна >>> x[3] = 'foo' # Traceback (most recent call last): # File "", line 1, in # IndexError: list assignment index out of range 

Замена элементов в списке по условию.

Например, имеем числовой список, в котором присутствуют как целые, так и вещественные числа. Необходимо получить тот же список, в котором вещественные числа округлены до целых.

В данном случае можно поступить 2-мя способами: первый - это создать новый пустой список и в цикле for/in добавлять в него значения, округляя все элементы до целого, из первого списка. Недостаток такого способа: если список огромный то столкнемся с не экономным расходом памяти.

Второй подход - это при каждой итерации по списку, проверять тип числа и если это вещественное число то округлять его до целого и на лету изменять значение в списке по его индексу. Недостаток: скорость обработки списка незначительно уменьшиться.

# имеем числовой список lst = [1, 5.5, 3, 8.2, 11.1, 10, 4, 5.6, 9] # используем функцию `enumerate()` # для определения индекса элемента # при каждой итерации for n, i in enumerate(lst, 0): # проверяем тип числа if type(i) == float: # если float, то округляем i = round(i) # изменяем элемент по индексу lst[n] = i >>> lst # [1, 6, 3, 8, 11, 10, 4, 6, 9] 

Замена элементов вложенных списков.

>>> x = [[2, 150], [11, 14, 17]] >>> x[0] = [0, 0] >>> x # [[0, 0], [11, 14, 17]] >>> x[1][1] = 1000 >>> x # [[0, 0], [11, 1000, 17]] >>> x[0][1] = 'foo' >>> x # [[0, 'foo'], [11, 1000, 17]] >>> x[1] = 'replace' >>> x # [[0, 'foo'], 'replace'] 
  • ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
  • Изменение/замена элемента списка по индексу
  • Изменение части списка операцией среза
  • Изменение списка срезом c заданным шагом
  • Удаление части списка операцией среза
  • Удаление части списка по срезу с заданным шагом
  • Метод list.append(), добавляет значение в конец списка
  • Метод list.clear(), очищает список
  • Метод list.copy(), копия списка
  • Метод list.extend(), расширяет список другой последовательностью
  • Расширение списка его содержимым
  • Метод list.insert(), вставить элемент по индексу
  • Метод list.pop(), получение с удалением элемент списка
  • Метод list.remove(), удаление элемента списка по значению
  • Метод list.reverse(), разворачивает элементы списка
  • Удаление элемента списка по индексу
  • Удаление дубликатов из списка Python с сохранением очередности

Замена элемента в матрице.Нормальный вывод на экран

Дана матрица,каждый элемент вычисляется по формуле: math.sin(n*(i+1)+m*(j+1))). если значение элемента отрицательное то нужно заменить его на 0. Как это сделать?(где у меня прокол) И как в данном случае вывести эту матрицу столбцом, а не кучей списков? Существует ли универсальный метод?

import math a = [[0]*4 for i in range(4)] m=4 n=4 for i in range(m): for j in range(n): a[i][j]=(math.sin(n*(i+1)+m*(j+1))) if(a[i][j]<0): a[i][j]==0 print(a) 

Отслеживать
20.2k 6 6 золотых знаков 37 37 серебряных знаков 81 81 бронзовый знак
задан 17 янв 2017 в 20:00
Awesome Man Awesome Man
684 3 3 золотых знака 15 15 серебряных знаков 31 31 бронзовый знак

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Там, где вы проверяете условие на отрицательное значение, надо использовать знак присваивания = , а не равенства == . a[i][j]==0 данное выражение просто возвращает истину или ложь, которое никуда не присваивается, поэтому у вас отрицательные значения не заменялись, но и исключений не возникало.

Что вы подразумеваете под универсальным методом вывода?

import math a = [[0]*4 for i in range(4)] m=4 n=4 for i in range(m): for j in range(n): a[i][j]=(math.sin(n*(i+1)+m*(j+1))) if(a[i][j] <0): a[i][j] = 0 # Тут надо присвоить значение print(*a, sep='\n') # Вывод по строкам в виде списков print() # Вывод просто в виде матрицы for i in a: print((len(i) * '<:.2f>').format(*i)) # ':.2f' - число знаков после запятой менять тут 

Отслеживать
ответ дан 17 янв 2017 в 20:28
user207200 user207200
5,220 8 8 золотых знаков 23 23 серебряных знака 41 41 бронзовый знак

В выводе в виде матрицы лучше форматирование вместо str использовать типа def str(val): return '<:5.4f>'.format(val)

17 янв 2017 в 20:38
Что такое print(*a, sep='\n') . ( Sep= )?
17 янв 2017 в 21:01

Универсальный метод вывода ,ето, кагбе шаблон кода который можна применить везде, и не расписывать все индивидуально.

17 янв 2017 в 21:04

@AwesomeMan, sep - параметр, в котором задается строка-разделитель между элеметами выводимой последовательности. По поводу применения шаблона "везде" - если вы подразумеваете вывод матриц, то оберните кусок кода в функцию.

Добавить комментарий

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