Изучаем матрицы в питоне и массивы NumPy в Python

Матрица — это двухмерная структура данных, в которой числа расположены в виде строк и столбцов. Например:

Эта матрица является матрицей три на четыре, потому что она состоит из 3 строк и 4 столбцов.

  • Матрицы в Python
  • NumPy массивы в Python
  • Как создать массив NumPy?
    • Массив целых чисел, чисел с плавающей точкой и составных чисел
    • Массив нулей и единиц
    • Использование arange() и shape()
  • Операции с матрицами
    • Сложение двух матриц или сумма элементов массива Python
    • Умножение двух матриц Python
    • Транспонирование матрицы питон
  • Доступ к элементам матрицы, строкам и столбца
    • Доступ к элементам матрицы
    • Доступ к строкам матрицы
    • Доступ к столбцам матрицы
  • Разделение матрицы

Python не имеет встроенного типа данных для матриц. Но можно рассматривать список как матрицу. Например:

A = [[1, 4, 5], 
    [-5, 8, 9]]

Этот список является матрицей на 2 строки и 3 столбца.

Обязательно ознакомьтесь с документацией по спискам Python, прежде чем продолжить читать эту статью.

Давайте посмотрим, как работать с вложенным списком.

A = [[1, 4, 5, 12], 
    [-5, 8, 9, 0],
    [-6, 7, 11, 19]]
print("A =", A) 
print("A[1] =", A[1])      # вторая строка
print("A[1][2] =", A[1][2])   # третий элемент второй строки
print("A[0][-1] =", A[0][-1])   # последний элемент первой строки
column = [];        # пустой список
for row in A:
  column.append(row[2])   
print("3rd column =", column)

Когда мы запустим эту программу, результат будет следующий:

A = [[1, 4, 5, 12], [-5, 8, 9, 0], [-6, 7, 11, 19]]
A [1] = [-5, 8, 9, 0]
A [1] [2] = 9
A [0] [- 1] = 12
3-й столбец = [5, 9, 11]

Использование вложенных списков в качестве матрицы подходит для простых вычислительных задач. Но в Python есть более эффективный способ работы с матрицами – NumPy .

NumPy — это расширение для научных вычислений, которое поддерживает мощный объект N-мерного массива. Прежде чем использовать NumPy, необходимо установить его. Для получения дополнительной информации,

  • Ознакомьтесь: Как установить NumPy Python?
  • Если вы работаете в Windows, скачайте и установите дистрибутив anaconda Python. Он поставляется вместе с NumPy и другими расширениями.

После установки NumPy можно импортировать и использовать его.

NumPy предоставляет собой многомерный массив чисел (который на самом деле является объектом). Давайте рассмотрим приведенный ниже пример:

import numpy as np
a = np.array([1, 2, 3])
print(a)               # Вывод: [1, 2, 3]
print(type(a))         # Вывод: <class 'numpy.ndarray'>

Как видите, класс массива NumPy называется ndarray.

Существует несколько способов создания массивов NumPy.

import numpy as np
A = np.array([[1, 2, 3], [3, 4, 5]])
print(A)
A = np.array([[1.1, 2, 3], [3, 4, 5]]) # Массив чисел с плавающей запятой
print(A)
A = np. array([[1, 2, 3], [3, 4, 5]], dtype = complex) # Массив составных чисел
print(A)

Когда вы запустите эту программу, результат будет следующий:

[[1 2 3]
 [3 4 5]]
[[1.1 2. 3.]
 [3. 4. 5.]]
[[1. + 0.j 2. + 0.j 3. + 0.j]
 [3. + 0.j 4. + 0.j 5. + 0.j]]
import numpy as np
zeors_array = np.zeros( (2, 3) )
print(zeors_array)
'''
 Вывод:
 [[0. 0. 0.]
  [0. 0. 0.]]
'''
ones_array = np.ones( (1, 5), dtype=np.int32 ) // указание dtype
print(ones_array)      # Вывод: [[1 1 1 1 1]]

Здесь мы указали dtype — 32 бита (4 байта). Следовательно, этот массив может принимать значения от -2-31 до 2-31-1.

import numpy as np
A = np.arange(4)
print('A =', A)
B = np.arange(12).reshape(2, 6)
print('B =', B)
''' 
Вывод:
A = [0 1 2 3]
B = [[ 0  1  2  3  4  5]
 [ 6  7  8  9 10 11]]
'''

Узнайте больше о других способах создания массива NumPy .

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

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

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

import numpy as np
A = np.array([[2, 4], [5, -6]])
B = np.array([[9, -3], [3, 6]])
C = A + B      # сложение соответствующих элементов
print(C)
''' 
Вывод:
[[11  1]
 [ 8  0]]
 '''

Чтобы умножить две матрицы, мы используем метод dot(). Узнайте больше о том, как работает numpy.dot .

Примечание: * используется для умножения массива (умножения соответствующих элементов двух массивов), а не умножения матрицы.

import numpy as np
A = np.array([[3, 6, 7], [5, -3, 0]])
B = np.array([[1, 1], [2, 1], [3, -3]])
C = a.dot(B)
print(C)
''' 
Вывод:
[[ 36 -12]
 [ -1   2]]
'''

Мы используем numpy.transpose для вычисления транспонирования матрицы.

import numpy as np
A = np.array([[1, 1], [2, 1], [3, -3]])
print(A.transpose())
''' 
Вывод:
[[ 1  2  3]
 [ 1  1 -3]]
'''

Как видите, NumPy значительно упростил нашу задачу.

Также можно получить доступ к элементам матрицы, используя индекс. Начнем с одномерного массива NumPy.

import numpy as np
A = np.array([2, 4, 6, 8, 10])
print("A[0] =", A[0])     # Первый элемент     
print("A[2] =", A[2])     # Третий элемент     
print("A[-1] =", A[-1])   # Последний элемент     

Когда вы запустите эту программу, результат будет следующий:

A [0] = 2
A [2] = 6
A [-1] = 10

Теперь выясним, как получить доступ к элементам двухмерного массива (который в основном представляет собой матрицу).

import numpy as np
A = np.array([[1, 4, 5, 12],
    [-5, 8, 9, 0],
    [-6, 7, 11, 19]])
#  Первый элемент первой строки
print("A[0][0] =", A[0][0])  
# Третий элемент второй строки
print("A[1][2] =", A[1][2])
# Последний элемент последней строки
print("A[-1][-1] =", A[-1][-1])     

Когда мы запустим эту программу, результат будет следующий:

A [0] [0] = 1
A [1] [2] = 9
A [-1] [- 1] = 19
import numpy as np
A = np.
array([[1, 4, 5, 12], [-5, 8, 9, 0], [-6, 7, 11, 19]]) print("A[0] =", A[0]) # Первая строка print("A[2] =", A[2]) # Третья строка print("A[-1] =", A[-1]) # Последняя строка (третья строка в данном случае)

Когда мы запустим эту программу, результат будет следующий:

A [0] = [1, 4, 5, 12]
A [2] = [-6, 7, 11, 19]
A [-1] = [-6, 7, 11, 19]
import numpy as np
A = np.array([[1, 4, 5, 12], 
    [-5, 8, 9, 0],
    [-6, 7, 11, 19]])
print("A[:,0] =",A[:,0]) # Первый столбец
print("A[:,3] =", A[:,3]) # Четвертый столбец
print("A[:,-1] =", A[:,-1]) # Последний столбец (четвертый столбец в данном случае)

Когда мы запустим эту программу, результат будет следующий:

A [:, 0] = [1 -5 -6]
A [:, 3] = [12 0 19]
A [:, - 1] = [12 0 19]

Если вы не знаете, как работает приведенный выше код, прочтите раздел «Разделение матрицы».

Разделение одномерного массива NumPy аналогично разделению списка. Рассмотрим пример:

import numpy as np
letters = np. array([1, 3, 5, 7, 9, 7, 5])
# с 3-го по 5-ый элементы
print(letters[2:5])        # Вывод: [5, 7, 9]
# с 1-го по 4-ый элементы
print(letters[:-5])        # Вывод: [1, 3]   
# с 6-го до последнего элемента
print(letters[5:])         # Вывод:[7, 5]
# с 1-го до последнего элемента
print(letters[:])          # Вывод:[1, 3, 5, 7, 9, 7, 5]
# список в обратном порядке
print(letters[::-1])          # Вывод:[5, 7, 9, 7, 5, 3, 1]

Теперь посмотрим, как разделить матрицу.

import numpy as np
A = np.array([[1, 4, 5, 12, 14], 
    [-5, 8, 9, 0, 17],
    [-6, 7, 11, 19, 21]])
print(A[:2, :4])  # две строки, четыре столбца
''' Вывод:
[[ 1  4  5 12]
 [-5  8  9  0]]
'''
print(A[:1,])  # первая строка, все столбцы
''' Вывод:
[[ 1  4  5 12 14]]
'''
print(A[:,2])  # все строки, второй столбец
''' Вывод:
[ 5  9 11]
'''
print(A[:, 2:5])  # все строки, с третьего по пятый столбец
''' Вывод:
[[ 5 12 14]
 [ 9  0 17]
 [11 19 21]]
'''

Использование NumPy вместо вложенных списков значительно упрощает работу с матрицами.

Мы рекомендуем детально изучить пакет NumPy, если вы планируете использовать Python для анализа данных.

Вадим Дворниковавтор-переводчик статьи «Python Matrices and NumPy Arrays»

Изучаем матрицы в питоне и массивы NumPy в Python

Матрица — это двухмерная структура данных, в которой числа расположены в виде строк и столбцов. Например:

Эта матрица является матрицей три на четыре, потому что она состоит из 3 строк и 4 столбцов.

  • Матрицы в Python
  • NumPy массивы в Python
  • Как создать массив NumPy?
    • Массив целых чисел, чисел с плавающей точкой и составных чисел
    • Массив нулей и единиц
    • Использование arange() и shape()
  • Операции с матрицами
    • Сложение двух матриц или сумма элементов массива Python
    • Умножение двух матриц Python
    • Транспонирование матрицы питон
  • Доступ к элементам матрицы, строкам и столбца
    • Доступ к элементам матрицы
    • Доступ к строкам матрицы
    • Доступ к столбцам матрицы
  • Разделение матрицы

Python не имеет встроенного типа данных для матриц. Но можно рассматривать список как матрицу. Например:

A = [[1, 4, 5], 
    [-5, 8, 9]]

Этот список является матрицей на 2 строки и 3 столбца.

Обязательно ознакомьтесь с документацией по спискам Python, прежде чем продолжить читать эту статью.

Давайте посмотрим, как работать с вложенным списком.

A = [[1, 4, 5, 12], 
    [-5, 8, 9, 0],
    [-6, 7, 11, 19]]
print("A =", A) 
print("A[1] =", A[1])      # вторая строка
print("A[1][2] =", A[1][2])   # третий элемент второй строки
print("A[0][-1] =", A[0][-1])   # последний элемент первой строки
column = [];        # пустой список
for row in A:
  column.append(row[2])   
print("3rd column =", column)

Когда мы запустим эту программу, результат будет следующий:

A = [[1, 4, 5, 12], [-5, 8, 9, 0], [-6, 7, 11, 19]]
A [1] = [-5, 8, 9, 0]
A [1] [2] = 9
A [0] [- 1] = 12
3-й столбец = [5, 9, 11]

Использование вложенных списков в качестве матрицы подходит для простых вычислительных задач. Но в Python есть более эффективный способ работы с матрицами – NumPy .

NumPy — это расширение для научных вычислений, которое поддерживает мощный объект N-мерного массива. Прежде чем использовать NumPy, необходимо установить его. Для получения дополнительной информации,

  • Ознакомьтесь: Как установить NumPy Python?
  • Если вы работаете в Windows, скачайте и установите дистрибутив anaconda Python. Он поставляется вместе с NumPy и другими расширениями.

После установки NumPy можно импортировать и использовать его.

NumPy предоставляет собой многомерный массив чисел (который на самом деле является объектом). Давайте рассмотрим приведенный ниже пример:

import numpy as np
a = np.array([1, 2, 3])
print(a)               # Вывод: [1, 2, 3]
print(type(a))         # Вывод: <class 'numpy.ndarray'>

Как видите, класс массива NumPy называется ndarray.

Существует несколько способов создания массивов NumPy.

import numpy as np
A = np.array([[1, 2, 3], [3, 4, 5]])
print(A)
A = np.array([[1.1, 2, 3], [3, 4, 5]]) # Массив чисел с плавающей запятой
print(A)
A = np. array([[1, 2, 3], [3, 4, 5]], dtype = complex) # Массив составных чисел
print(A)

Когда вы запустите эту программу, результат будет следующий:

[[1 2 3]
 [3 4 5]]
[[1.1 2. 3.]
 [3. 4. 5.]]
[[1. + 0.j 2. + 0.j 3. + 0.j]
 [3. + 0.j 4. + 0.j 5. + 0.j]]
import numpy as np
zeors_array = np.zeros( (2, 3) )
print(zeors_array)
'''
 Вывод:
 [[0. 0. 0.]
  [0. 0. 0.]]
'''
ones_array = np.ones( (1, 5), dtype=np.int32 ) // указание dtype
print(ones_array)      # Вывод: [[1 1 1 1 1]]

Здесь мы указали dtype — 32 бита (4 байта). Следовательно, этот массив может принимать значения от -2-31 до 2-31-1.

import numpy as np
A = np.arange(4)
print('A =', A)
B = np.arange(12).reshape(2, 6)
print('B =', B)
''' 
Вывод:
A = [0 1 2 3]
B = [[ 0  1  2  3  4  5]
 [ 6  7  8  9 10 11]]
'''

Узнайте больше о других способах создания массива NumPy .

Выше мы привели пример сложение, умножение матриц и транспонирование матрицы. Мы использовали вложенные списки, прежде чем создавать эти программы. Рассмотрим, как выполнить ту же задачу, используя массив NumPy.

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

import numpy as np
A = np.array([[2, 4], [5, -6]])
B = np.array([[9, -3], [3, 6]])
C = A + B      # сложение соответствующих элементов
print(C)
''' 
Вывод:
[[11  1]
 [ 8  0]]
 '''

Чтобы умножить две матрицы, мы используем метод dot(). Узнайте больше о том, как работает numpy.dot .

Примечание: * используется для умножения массива (умножения соответствующих элементов двух массивов), а не умножения матрицы.

import numpy as np
A = np.array([[3, 6, 7], [5, -3, 0]])
B = np.array([[1, 1], [2, 1], [3, -3]])
C = a.dot(B)
print(C)
''' 
Вывод:
[[ 36 -12]
 [ -1   2]]
'''

Мы используем numpy.transpose для вычисления транспонирования матрицы.

import numpy as np
A = np.array([[1, 1], [2, 1], [3, -3]])
print(A.transpose())
''' 
Вывод:
[[ 1  2  3]
 [ 1  1 -3]]
'''

Как видите, NumPy значительно упростил нашу задачу.

Также можно получить доступ к элементам матрицы, используя индекс. Начнем с одномерного массива NumPy.

import numpy as np
A = np.array([2, 4, 6, 8, 10])
print("A[0] =", A[0])     # Первый элемент     
print("A[2] =", A[2])     # Третий элемент     
print("A[-1] =", A[-1])   # Последний элемент     

Когда вы запустите эту программу, результат будет следующий:

A [0] = 2
A [2] = 6
A [-1] = 10

Теперь выясним, как получить доступ к элементам двухмерного массива (который в основном представляет собой матрицу).

import numpy as np
A = np.array([[1, 4, 5, 12],
    [-5, 8, 9, 0],
    [-6, 7, 11, 19]])
#  Первый элемент первой строки
print("A[0][0] =", A[0][0])  
# Третий элемент второй строки
print("A[1][2] =", A[1][2])
# Последний элемент последней строки
print("A[-1][-1] =", A[-1][-1])     

Когда мы запустим эту программу, результат будет следующий:

A [0] [0] = 1
A [1] [2] = 9
A [-1] [- 1] = 19
import numpy as np
A = np. array([[1, 4, 5, 12], 
    [-5, 8, 9, 0],
    [-6, 7, 11, 19]])
print("A[0] =", A[0]) # Первая строка
print("A[2] =", A[2]) # Третья строка
print("A[-1] =", A[-1]) # Последняя строка (третья строка в данном случае)

Когда мы запустим эту программу, результат будет следующий:

A [0] = [1, 4, 5, 12]
A [2] = [-6, 7, 11, 19]
A [-1] = [-6, 7, 11, 19]
import numpy as np
A = np.array([[1, 4, 5, 12], 
    [-5, 8, 9, 0],
    [-6, 7, 11, 19]])
print("A[:,0] =",A[:,0]) # Первый столбец
print("A[:,3] =", A[:,3]) # Четвертый столбец
print("A[:,-1] =", A[:,-1]) # Последний столбец (четвертый столбец в данном случае)

Когда мы запустим эту программу, результат будет следующий:

A [:, 0] = [1 -5 -6]
A [:, 3] = [12 0 19]
A [:, - 1] = [12 0 19]

Если вы не знаете, как работает приведенный выше код, прочтите раздел «Разделение матрицы».

Разделение одномерного массива NumPy аналогично разделению списка. Рассмотрим пример:

import numpy as np
letters = np. array([1, 3, 5, 7, 9, 7, 5])
# с 3-го по 5-ый элементы
print(letters[2:5])        # Вывод: [5, 7, 9]
# с 1-го по 4-ый элементы
print(letters[:-5])        # Вывод: [1, 3]   
# с 6-го до последнего элемента
print(letters[5:])         # Вывод:[7, 5]
# с 1-го до последнего элемента
print(letters[:])          # Вывод:[1, 3, 5, 7, 9, 7, 5]
# список в обратном порядке
print(letters[::-1])          # Вывод:[5, 7, 9, 7, 5, 3, 1]

Теперь посмотрим, как разделить матрицу.

import numpy as np
A = np.array([[1, 4, 5, 12, 14], 
    [-5, 8, 9, 0, 17],
    [-6, 7, 11, 19, 21]])
print(A[:2, :4])  # две строки, четыре столбца
''' Вывод:
[[ 1  4  5 12]
 [-5  8  9  0]]
'''
print(A[:1,])  # первая строка, все столбцы
''' Вывод:
[[ 1  4  5 12 14]]
'''
print(A[:,2])  # все строки, второй столбец
''' Вывод:
[ 5  9 11]
'''
print(A[:, 2:5])  # все строки, с третьего по пятый столбец
''' Вывод:
[[ 5 12 14]
 [ 9  0 17]
 [11 19 21]]
'''

Использование NumPy вместо вложенных списков значительно упрощает работу с матрицами. Мы рекомендуем детально изучить пакет NumPy, если вы планируете использовать Python для анализа данных.

Вадим Дворниковавтор-переводчик статьи «Python Matrices and NumPy Arrays»

Программа Python для умножения двух матриц

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

Чтобы понять этот пример, вы должны знать следующие темы программирования на Python:

В Python мы можем реализовать матрицу как вложенный список (список внутри списка).

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

Например, X = [[1, 2], [4, 5], [3, 6]] будет представлять собой матрицу 3x2 .

Первую строку можно выбрать как X[0] . И элемент в первой строке, первом столбце можно выбрать как X[0][0] .

Умножение двух матриц X и Y определено, только если количество столбцов в X равно количеству строк Y .

Если X является матрицей n x m , а Y является матрицей m x l , то XY определен и имеет размерность n x l (но YX не определен). Вот несколько способов реализовать матричное умножение в Python.

Исходный код: Умножение матриц с использованием вложенного цикла

 # Программа для умножения двух матриц с использованием вложенных циклов
#матрица 3х3
Х = [[12,7,3],
    [4 ,5,6],
    [7 ,8,9]]
#матрица 3х4
Y = [[5,8,1,2],
    [6,7,3,0],
    [4,5,9,1]]
# результат 3x4
результат = [[0,0,0,0],
         [0,0,0,0],
         [0,0,0,0]]
# перебираем строки X
для i в диапазоне (len (X)):
   # перебираем столбцы Y
   для j в диапазоне (len (Y [0])):
       # перебираем строки Y
       для k в диапазоне (len (Y)):
           результат[i][j] += X[i][k] * Y[k][j]
для r в результате:
   печать (г)
 

Выход

  [114, 160, 60, 27]
[74, 97, 73, 14]
[119, 157, 112, 23] 
 

В этой программе мы использовали вложенные циклы for для перебора каждой строки и каждого столбца. Сумму произведений суммируем в результате.

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

Для больших операций с матрицами мы рекомендуем оптимизированные программные пакеты, такие как NumPy, которые в несколько (порядка 1000) раз быстрее, чем приведенный выше код.

Исходный код: Умножение матриц с использованием понимания вложенных списков

 # Программа для умножения двух матриц с использованием понимания списков
#матрица 3х3
Х = [[12,7,3],
    [4 ,5,6],
    [7 ,8,9]]
#матрица 3х4
Y = [[5,8,1,2],
    [6,7,3,0],
    [4,5,9,1]]
# результат 3x4
результат = [[сумма(a*b для a,b в zip(X_row,Y_col)) для Y_col в zip(*Y)] для X_row в X]
для r в результате:
   печать (г)
 

Вывод этой программы такой же, как и выше. Чтобы понять приведенный выше код, мы должны сначала узнать о встроенной функции 9.0011 zip() и список аргументов распаковки с помощью оператора *.

Мы использовали вложенный список для перебора каждого элемента в матрице. Сначала код кажется сложным и нечитаемым. Но как только вы освоите понимание списков, вы, вероятно, уже не вернетесь к вложенным циклам.

Python Массив числовых значений

В этом руководстве вы узнаете о модуле массива Python, разнице между массивами и списками, а также о том, как и когда их использовать с помощью примеров.

Примечание: Когда люди говорят о массивах в Python, чаще всего они имеют в виду списков Python . Если это так, посетите руководство по списку Python.

В этом уроке мы сосредоточимся на модуле с именем array . Модуль array позволяет нам хранить набор числовых значений.


Создание массивов Python

Чтобы создать массив числовых значений, нам нужно импортировать модуль массива . Например:

 импортировать массив как обр
a = массив.массив('d', [1.1, 3.5, 4.5])
print(a) 

Вывод

  array('d', [1. 1, 3.5, 4.5])  

Здесь мы создали массив типа float . Буква d — код типа. Это определяет тип массива во время создания.

Наиболее часто используемые коды типов перечислены ниже:

Код С Тип Питон Тип Мин. байт
б подписанный символ интервал 1
Б символ без знака интервал 1
и Py_UNICODE Юникод 2
ч коротко подписанный между 2
Н беззнаковый короткий между 2
и подписано между 2
я Целое число без знака между 2
л подписано длинное между 4
л длинное беззнаковое между 4
ф поплавок поплавок 4
д двойной поплавок 8

В этой статье мы не будем обсуждать различные типы C. Во всей этой статье мы будем использовать два кода типов: и для целых чисел и d для чисел с плавающей запятой.

Примечание : Код типа u для символов Unicode устарел, начиная с версии 3.3. Избегайте использования как можно больше.


Доступ к элементам массива Python

Мы используем индексы для доступа к элементам массива:

 импортировать массив как arr
a = массив.массив('i', [2, 4, 6, 8])
print("Первый элемент:", a[0])
print("Второй элемент:", a[1])
print("Последний элемент:", a[-1]) 

Вывод

  Первый элемент: 2
Второй элемент: 4
Последний элемент: 8  

Примечание : Индекс начинается с 0 (не 1) аналогично спискам.


Нарезка массивов Python

Мы можем получить доступ к ряду элементов в массиве с помощью оператора среза : .

 импортировать массив как обр
number_list = [2, 5, 62, 5, 42, 52, 48, 5]
массив_чисел = массив. массив('i', список_чисел)
print(numbers_array[2:5]) # с 3-го по 5-й
print(numbers_array[:-5]) # начиная с 4-го
print(numbers_array[5:]) # с 6-го до конца
print(numbers_array[:]) # с начала до конца 

Выход

 Массив ('i', [62, 5, 42])
массив('i', [2, 5, 62])
массив('i', [52, 48, 5])
array('i', [2, 5, 62, 5, 42, 52, 48, 5])  

Изменение и добавление элементов

Массивы изменяемы; их элементы можно изменять так же, как списки.

 импортировать массив как обр
числа = массив.массив('i', [1, 2, 3, 5, 7, 10])
# изменение первого элемента
числа [0] = 0
print(numbers) # Вывод: массив('i', [0, 2, 3, 5, 7, 10])
# замена 3-го элемента на 5-й
числа[2:5] = массив.массив('i', [4, 6, 8])
print(numbers) # Вывод: array('i', [0, 2, 4, 6, 8, 10]) 

Выход

  массив('i', [0, 2, 3, 5, 7, 10])
array('i', [0, 2, 4, 6, 8, 10])  

Мы можем добавить один элемент в массив, используя метод append() , или добавить несколько элементов, используя метод extend() Метод .

 импортировать массив как обр
числа = массив.массив('i', [1, 2, 3])
числа.добавить(4)
print(numbers) # Вывод: массив('i', [1, 2, 3, 4])
# extend() добавляет итерируемый объект в конец массива
числа.расширить([5, 6, 7])
print(numbers) # Вывод: array('i', [1, 2, 3, 4, 5, 6, 7]) 

Выход

 Массив  ('i', [1, 2, 3, 4])
array('i', [1, 2, 3, 4, 5, 6, 7])  

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

 импортировать массив как обр
нечетный = массив.массив('i', [1, 3, 5])
четный = массив.массив('i', [2, 4, 6])
numbers = arr.array('i') # создание пустого массива целых чисел
числа = нечетные + четные
печать(числа) 

Вывод

  массив('i', [1, 3, 5, 2, 4, 6])  

Удаление элементов массива Python

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

 импортировать массив как обр
число = массив. массив('i', [1, 2, 3, 3, 4])
del number[2] # удаление третьего элемента
print(number) # Вывод: array('i', [1, 2, 3, 4])
del number # удаление всего массива
print(number) # Ошибка: массив не определен 

Вывод

 Массив  ('i', [1, 2, 3, 4])
Traceback (последний последний вызов):
  Файл "", строка 9, в <модуль>
    print(number) # Ошибка: массив не определен
NameError: name 'number' не определено  

Мы можем использовать метод remove() для удаления данного элемента и метод pop() для удаления элемента по заданному индексу.

 импортировать массив как обр
числа = массив.массив('i', [10, 11, 12, 12, 13])
числа.удалить(12)
print(numbers) # Вывод: массив('i', [10, 11, 12, 13])
print(numbers.pop(2)) # Вывод: 12
print(numbers) # Вывод: array('i', [10, 11, 13]) 

Выход

  массив('i', [10, 11, 12, 13])
12
array('i', [10, 11, 13])  

Посетите эту страницу, чтобы узнать больше о массивах Python и их методах.


Списки Python против массивов

В Python мы можем рассматривать списки как массивы. Однако мы не можем ограничить тип элементов, хранящихся в списке. Например:

 # элементы разных типов
a = [1, 3.5, "Hello"] 

Если вы создаете массивы с использованием массива все элементы массива должны быть одного числового типа.

 импортировать массив как обр
# Ошибка
a = массив.array('d', [1, 3.5, "Привет"]) 

Вывод

  Трассировка (последний последний вызов):
  Файл "", строка 3, в 
    a = массив.array('d', [1, 3.5, "Привет"])
TypeError: должно быть реальное число, а не str  

Когда использовать массивы?

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

Итак, для чего используются массивы, созданные из модуля массивов Python?

Тип array.