Python - Матрица

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

Мы также используем пакет numpy для обработки матричных данных.

Пример матрицы

Рассмотрим случай регистрации температуры в течение 1 недели, измеренной утром, в полдень, вечером и в середине ночи. Его можно представить как матрицу 7X5 с использованием массива и метода изменения формы, доступного в numpy.

from numpy import * 
a = array([['Mon',18,20,22,17],['Tue',11,18,21,18],
		   ['Wed',15,21,20,19],['Thu',11,20,22,21],
		   ['Fri',18,17,23,22],['Sat',12,22,20,18],
		   ['Sun',13,15,19,16]])
    
m = reshape(a,(7,5))
print(m)

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

[['Mon' '18' '20' '22' '17']
 ['Tue' '11' '18' '21' '18']
 ['Wed' '15' '21' '20' '19']
 ['Thu' '11' '20' '22' '21']
 ['Fri' '18' '17' '23' '22']
 ['Sat' '12' '22' '20' '18']
 ['Sun' '13' '15' '19' '16']]

Доступ к значениям в матрице

Доступ к элементам данных в матрице можно получить с помощью индексов. Методы доступа такие же, как и доступ к данным в двумерном массиве.

from numpy import * 
m = array([['Mon',18,20,22,17],['Tue',11,18,21,18],
		   ['Wed',15,21,20,19],['Thu',11,20,22,21],
		   ['Fri',18,17,23,22],['Sat',12,22,20,18],
		   ['Sun',13,15,19,16]])
    
# Print data for Wednesday
print(m[2])

# Print data for friday evening
print(m[4][3])

Когда приведенный выше код выполняется, он дает следующий результат:

['Wed', 15, 21, 20, 19]
23

Добавление строки

from numpy import * 
m = array([['Mon',18,20,22,17],['Tue',11,18,21,18],
		   ['Wed',15,21,20,19],['Thu',11,20,22,21],
		   ['Fri',18,17,23,22],['Sat',12,22,20,18],
		   ['Sun',13,15,19,16]])
    
m_r = append(m,[['Avg',12,15,13,11]],0)

print(m_r)

Когда приведенный выше код выполняется, он дает следующий результат:

[['Mon' '18' '20' '22' '17']
 ['Tue' '11' '18' '21' '18']
 ['Wed' '15' '21' '20' '19']
 ['Thu' '11' '20' '22' '21']
 ['Fri' '18' '17' '23' '22']
 ['Sat' '12' '22' '20' '18']
 ['Sun' '13' '15' '19' '16']
 ['Avg' '12' '15' '13' '11']]

Добавление столбца

Мы можем добавить столбец в матрицу с помощью метода insert (). здесь мы должны указать индекс, в который мы хотим добавить столбец, и массив, содержащий новые значения добавленных столбцов. В приведенном ниже примере мы добавляем новый столбец в пятую позицию от начала.

from numpy import * 
m = array([['Mon',18,20,22,17],['Tue',11,18,21,18],
		   ['Wed',15,21,20,19],['Thu',11,20,22,21],
		   ['Fri',18,17,23,22],['Sat',12,22,20,18],
		   ['Sun',13,15,19,16]])
    
m_c = insert(m,[5],[[1],[2],[3],[4],[5],[6],[7]],1)

print(m_c)

Когда приведенный выше код выполняется, он дает следующий результат:

[['Mon' '18' '20' '22' '17' '1']
 ['Tue' '11' '18' '21' '18' '2']
 ['Wed' '15' '21' '20' '19' '3']
 ['Thu' '11' '20' '22' '21' '4']
 ['Fri' '18' '17' '23' '22' '5']
 ['Sat' '12' '22' '20' '18' '6']
 ['Sun' '13' '15' '19' '16' '7']]

Удалить строку из матрицы

Мы можем удалить строку из матрицы с помощью метода delete (). Мы должны указать индекс строки, а также значение оси, равное 0 для строки и 1 для столбца.

from numpy import * 
m = array([['Mon',18,20,22,17],['Tue',11,18,21,18],
		   ['Wed',15,21,20,19],['Thu',11,20,22,21],
		   ['Fri',18,17,23,22],['Sat',12,22,20,18],
		   ['Sun',13,15,19,16]])
    
m = delete(m,[2],0)

print(m)

Когда приведенный выше код выполняется, он дает следующий результат:

[['Mon' '18' '20' '22' '17']
 ['Tue' '11' '18' '21' '18']
 ['Thu' '11' '20' '22' '21']
 ['Fri' '18' '17' '23' '22']
 ['Sat' '12' '22' '20' '18']
 ['Sun' '13' '15' '19' '16']]

Удалить столбец из матрицы

Мы можем удалить столбец из матрицы с помощью метода delete (). Мы должны указать индекс столбца, а также значение оси, равное 0 для строки и 1 для столбца.

from numpy import * 
m = array([['Mon',18,20,22,17],['Tue',11,18,21,18],
		   ['Wed',15,21,20,19],['Thu',11,20,22,21],
		   ['Fri',18,17,23,22],['Sat',12,22,20,18],
		   ['Sun',13,15,19,16]])
    
m = delete(m,s_[2],1)

print(m)

Когда приведенный выше код выполняется, он дает следующий результат:

[['Mon' '18' '22' '17']
 ['Tue' '11' '21' '18']
 ['Wed' '15' '20' '19']
 ['Thu' '11' '22' '21']
 ['Fri' '18' '23' '22']
 ['Sat' '12' '20' '18']
 ['Sun' '13' '19' '16']]

Обновить строку в матрице

Чтобы обновить значения в строке матрицы, мы просто повторно присваиваем значения индексу строки. В приведенном ниже примере все значения данных за четверг помечены как нулевые. Индекс этой строки - 3.

from numpy import * 
m = array([['Mon',18,20,22,17],['Tue',11,18,21,18],
		   ['Wed',15,21,20,19],['Thu',11,20,22,21],
		   ['Fri',18,17,23,22],['Sat',12,22,20,18],
		   ['Sun',13,15,19,16]])
    
m[3] = ['Thu',0,0,0,0]

print(m)

Когда приведенный выше код выполняется, он дает следующий результат:

[['Mon' '18' '20' '22' '17']
 ['Tue' '11' '18' '21' '18']
 ['Wed' '15' '21' '20' '19']
 ['Thu' '0' '0' '0' '0']
 ['Fri' '18' '17' '23' '22']
 ['Sat' '12' '22' '20' '18']
 ['Sun' '13' '15' '19' '16']]