На уроке рассмотрен алгоритм работы с двумерными массивами а python, приведены примеры инициализации и обработки элементов матрицы
Обработка элементов двумерного массива
Нумерация элементов двумерного массива, как и элементов одномерного массива, начинается с нуля.
Т.е. matrix[2][3] — это элемент третьей строки четвертого столбца.
Пример обработки элементов матрицы:
Найти произведение элементов двумерного массива.
✍ Решение:
12345 | p = 1 for i in range(N): for j in range(M): p *= matrix[i][j] print (p) |
p = 1 for i in range(N): for j in range(M): p *= matrix[i][j] print (p)
Пример:
Найти сумму элементов двумерного массива.
✍ Решение:
Более подходящий вариант для Python:
1234 | s = 0 for row in matrix: s += sum(row) print (s) |
s = 0 for row in matrix: s += sum(row) print (s)
Для поиска суммы существует стандартная функция sum.
Получены значения температуры воздуха за 4 дня с трех метеостанций, расположенных в разных регионах страны:
Номер станции | 1-й день | 2-й день | 3-й день | 4-й день |
---|---|---|---|---|
1 | -8 | -14 | -19 | -18 |
2 | 25 | 28 | 26 | 20 |
3 | 11 | 18 | 20 | 25 |
Т.е. запись показаний в двумерном массиве выглядела бы так:
t[0][0]=-8 | t[0][1]=-14 | t[0][2]=-19 | t[0][3]=-18 |
t[1][0]=25 | t[1][1]=28 | t[1][2]=26 | t[1][3]=20 |
t[2][0]=11 | t[2][1]=18 | t[2][2]=20 | t[2][3]=25 |
- Распечатать температуру на 2-й метеостанции за 4-й день и на 3-й метеостанции за 1-й день.
- Распечатать показания термометров всех метеостанций за 2-й день.
- Определить среднюю температуру на 3-й метеостанции.
- Распечатать, в какие дни и на каких метеостанциях температура была в диапазоне 24-26 градусов тепла.
Задание Python 8_1:
Написать программу поиска минимального и максимального элементов матрицы и их индексов.
Задание Python 8_2:
Написать программу, выводящую на экран строку матрицы, сумма элементов которой максимальна.
Для обработки элементов квадратной матрицы (размером N x N):Для элементов главной диагонали достаточно использовать один цикл:
for i in range(N): # работаем с matrix[i][i] |
for i in range(N): # работаем с matrix[i][i]
Для элементов побочной диагонали:
for i in range(N): # работаем с matrix[i][N-1-i] |
for i in range(N): # работаем с matrix[i][N-1-i]
Пример:Переставить 2-й и 4-й столбцы матрицы. Использовать два способа.
✍ Решение:
-
for i in range(N): c = A[i][2] A[i][2] = A[i][4] A[i][4] = c for i in range(N): c = A[i][2] A[i][2] = A[i][4] A[i][4] = c
-
for i in range(N): A[i][2], A[i][4] = A[i][4], A[i][2] for i in range(N): A[i][2], A[i][4] = A[i][4], A[i][2]
Задание Python 8_3:
Составить программу, позволяющую с помощью датчика случайных чисел сформировать матрицу размерностью N. Определить:
минимальный элемент, лежащий ниже побочной диагонали;произведение ненулевых элементов последней строки.
Источник: http://labs-org.ru/python-8/
Объявление двумерного массива
Синтаксис:
array-name = [ [d1, d2, …. dn], [e1, e2, …. en] ]
Пример:
array_input = [ [10,12,14] ,[0,1,2] ]print(array_input[0]) # printing elements of row 0print(array_input[1]) # printing elements of row 1
Вывод:
Вход в двумерный массив предоставляется в виде строк и столбцов.
Пример:
size = int(input()) array_input = []for x in range(size): array_input.append([int(y) for y in input().split()])print(array_input)
Вывод:
Источник: http://pythononline.ru/osnovy/dvumernyy-massiv-python
Двумерный массив в Python
Давайте посмотрим на элементы подобной конструкции массива. Обратите внимание, что они располагаются в столбцах и строках, которые заполняются следующим образом:
Мы можем увидеть, что главная идея реализации двумерного набора данных — создание нескольких списков a2 внутри одного большого списка a1. Далее, посредством 2-х циклов for осуществляется автозаполнение нулями матрицы, имеющей размерность 5×5. И эту задачу успешно решают методы append и range — первый добавляет в список новый элемент (0), второй устанавливает его величину (5).
Следует сказать, что для каждого нового for-цикла применяется своя временная переменная, которая выполняет представление текущего элемента внутренних (i) или внешнего (j) списков. Чтобы обратиться к требуемой ячейке многомерного списка, надо указать её координаты в квадратных скобках, ориентируясь при этом на строки и столбцы: a1[1][2].
Источник: http://otus.ru/nest/post/1441/
Создание и заполнение
Перед тем как добавить (создать) новый массив в Python 3, необходимо произвести импорт библиотеки, отвечающей за работу с таким объектом. Для этого потребуется добавить строку from array import * в файл программы. Как уже было сказано ранее, массивы ориентированы на взаимодействие с одним постоянным типом данных, вследствие чего все их ячейки имеют одинаковый размер. Воспользовавшись функцией array, можно создать новый набор данных. В следующем примере демонстрируется заполнение массива Python — запись целых чисел при помощи метода, предложенного выше.
from array import *data = array(‘i’, [2, 5, 4, 0, 8])
Как можно заметить, функция array принимает два аргумента, первым из которых становится тип создаваемого массива, а на месте второго стоит начальный список его значений. В данном случае i представляет собой целое знаковое число, занимающее 2 байта памяти. Вместо него можно использовать и другие примитивы, такие как 1-байтовый символ (c) или 4-байтовое число с плавающей точкой (f).
При этом важно помнить, что массив способен хранить только данные одного типа, иначе вызов программы завершится ошибкой.
Обратиться к элементу можно при помощи квадратных скобок, к примеру, data[2].
Источник: http://all-python.ru/osnovy/massivy.html
Обзор учебника
Этот урок разделен на 4 части; они есть:
- Из списка в массивы
- Индексирование массива
- Нарезка массива
- Изменение формы массива
Источник: http://machinelearningmastery.ru/index-slice-reshape-numpy-arrays-machine-learning-python/
1. Из списка в массивы
В общем, я рекомендую загружать ваши данные из файла с помощью функций Pandas или даже NumPy.
Для примера, смотрите пост:
- Как загрузить данные машинного обучения в Python
В этом разделе предполагается, что вы загрузили или сгенерировали свои данные другими способами, и теперь они представлены в виде списков Python.
Давайте посмотрим на преобразование ваших данных в списках в массивы NumPy.
Одномерный список в массив
Вы можете загрузить свои данные или сгенерировать свои данные и иметь доступ к ним в виде списка.
Вы можете преобразовать одномерный список данных в массив, вызвав функцию array () NumPy.
# one dimensional examplefrom numpy import array# list of datadata = [11, 22, 33, 44, 55]# array of datadata = array(data)print(data)print(type(data))
Выполнение примера преобразует одномерный список в массив NumPy.
[11 22 33 44 55]<class ‘numpy.ndarray’>
Двумерный список списков для массива
В машинном обучении более вероятно, что у вас будут двумерные данные.
Это таблица данных, в которой каждая строка представляет новое наблюдение, а каждый столбец — новую особенность.
Возможно, вы сгенерировали данные или загрузили их, используя собственный код, и теперь у вас есть список списков. Каждый список представляет новое наблюдение.
Вы можете преобразовать свой список списков в массив NumPy так же, как описано выше, вызвав функцию array ().
# two dimensional examplefrom numpy import array# list of datadata = [[11, 22], [33, 44], [55, 66]]# array of datadata = array(data)print(data)print(type(data))
Выполнение примера показывает, что данные успешно преобразованы.
[[11 22] [33 44] [55 66]]<class ‘numpy.ndarray’>
Источник: http://machinelearningmastery.ru/index-slice-reshape-numpy-arrays-machine-learning-python/
Операции над двумерным массивом
Собственно, никаких новых операций над двумерными массивами нет. Вы всегда работаете или с внешним массивом, или с каким-то внутренним массивом, и можете использовать все операции, которые знаете для одномерных массивов. Например, len(z) — это длина «внешнего» массива (в примере выше получается 3, т.к. z содержит три элемента, и не важно, что каждый из них тоже массив), а len(z[2]) — длина внутреннего массива на позиции 2 (т.е. 2 в примере выше). Для массива x выше (того, у которого каждый подмассив имеет свою длину) получим len(x)==5, и, например, len(x[3])==0.
Аналогично работают все остальные операции. z.append([1,2]) приписывает к «внешнему» массиву еще один «внутренний» массив, а z[2].append(3) приписывает число 3 к тому «внутреннему» массиву, который находится на позиции 2. Далее, z.pop() удаляет последний «внутренний» из «внешнего» массива, а z[2].pop() удаляет последний элемент из «внутреннего» массива на позиции 2. Аналогично работают z[1:2] и z[1][0:1] и т.д. — все операции, которые я приводил выше.
Источник: http://algoprog.ru/material/module-22749
Нарезка
Нарезка массива используется для доступа к нескольким значениям в массиве.
Синтаксис:
<slice_array> = <array>[start:stop]
array1 = [[1,2,3],[4,5,6,7]]#python array slicearray2 = array1[1:3] #index 1 to 2print(array2)array2 = array1[:1] #index 0 to 1print(array2)
Вывод:
Источник: http://pythononline.ru/osnovy/dvumernyy-massiv-python
Рекомендации
- Массивы Python
- Python 2D массивы
- Документация для массивов Python
Источник: http://pythobyte.com/two-dimensional-array-in-python-414f2fc5/