Python array

Содержание:

Операторы array

4.1. Арифметические операции c массивами в Python

Арифметические операции с array выполняются поэлементно, то есть применяются к каждому элементу массива. Пример, если мы умножаем массив на 3, то каждый элемент будет умножен на 3. Так же и с остальными арифметическими операциями.

>>> import numpy as np
>>> numbers_1 = np.array(, ])
>>> numbers_1 * 3array(,
       ])
>>> numbers_1 ** 3array(,
       ], dtype=int32)
>>> numbers_1array(,
       ])

Важно, что при арифметических операциях, возвращается новая коллекция array, исходный массив numbers_1 не изменяется. А вот расширенное присваивание изменяет каждый элемент левого операнда:

А вот расширенное присваивание изменяет каждый элемент левого операнда:

>>> import numpy as np
>>> numbers_1 = np.array(, ])
>>> numbers_1 += 10
>>> numbers_1array(,
       ])

4.2. Арифметические операции между коллекциями array

С коллекциями array можно выполнять арифметические операции, если они имеют одинаковые размеры. Результатом будет новая коллекция array:

>>> import numpy as np
>>> numbers_1 = np.array(, ])
>>> numbers_2 = np.array(, ])
>>> numbers_1 * numbers_2array(,
       ])
>>> numbers_1 — numbers_2array(,
       ])

4.3. Сравнение коллекция array

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

>>> import numpy as np
>>> numbers_1 = np.array()
>>> numbers_2 = np.array()
>>> numbers_1 > numbers_2array()
>>> numbers_1 == numbers_2array()
>>> numbers_1 >= 5array()

В результате сравнений создаются коллекции array с логическими значениями ( True или False), каждое из которых означает результат сравнения каждого элемента.

How to modify elements?

Arrays in Python are mutable. They can be modified by the following syntax:

Object_name=value; 

Example:

import array as myarr 
a=myarr.array('b',) 
a=99 
print(a) 

Output:

array('b', ) 

We can also perform concatenation operations on arrays in Python.

Example:

import array as myarr 
first = myarr.array('b', ) 
second = myarr.array('b', ) 
numbers = myarr.array('b')   
numbers = first + second 
print(numbers)

Output:

array('b', )   

The above Python array example code concates two variables called “first” and “second”. The result is stored in a variable called “number”.

The last line of code is used to print two arrays.

Массивы NumPy (Ndarray)

Создание

Для использования класса Ndarray предварительно необходимо импортировать библиотеку numpy:

import numpy as np

Для создания массива используется функция модуля numpy — array():

import numpy as np

new_array = np.array()

В первый параметр функции array() передаётся список, поэтому способов создания столько же, сколько способов создания списков. При передаче в параметр многомерного списка будет создан многомерный массив:

import numpy as np

new_array = np.array(,
                        ,
                        ])

Тип значения элементов

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

import numpy as np

new_array = np.array(,
                        ,
                        ], dtype=np.str)

Атрибуты класса Ndarray

Далее рассмотрим атрибуты класса Ndarray:

  • ndim — число измерений (осей) массива;
  • shape — размерность массива. Это tuple, содержащий натуральные числа (n, m) — длины массива по каждой оси (n — высота, m — ширина). Число элементов кортежа shape равно ndim.
  • size — количество элементов в массиве, равно произведению всех элементов атрибута shape;
  • dtype — тип элементов массива. NumPy предоставляет возможность использовать как встроенные типы, например: bool_, character, int8, int16, int32, int64, float8, float16, float32, float64, complex64, object_, так и собственные типы данных, в том числе и составные;
  • itemsize — размер каждого элемента массива в байтах;
  • data — буфер, содержащий фактические элементы массива. Обычно не нужно использовать этот атрибут, так как обращаться к элементам массива проще всего с помощью индексов.

Изменение размерности

Размерность массива darray в Python можно изменять методом reshape():

import numpy as np

new_array = np.array(,
                        ,
                        ], dtype=np.str)
new_array.reshape(2, 3)

При этом количество элементов должно позволять это сделать, т.е. произведение элементов атрибута shape до и после изменения размера должно быть одинаковым. К примеру, нельзя изменить размерность массива с (3, 4) на (2, 5), но можно изменить её на (2, 6).

Реверсив массив модуля массива в Python

Несмотря на то, что Python не поддерживает массивы, мы можем использовать Модуль массива Для создания массивных объектов различных типов данных. Хотя этот модуль обеспечивает много ограничений, когда речь идет о типе данных массива, он широко используется для работы с структурами данных массива в Python.

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

1. Использование обратного () метода

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

import array

#The original array
new_arr=array.array('i',)
print("Original Array is :",new_arr)

#reversing using reverse()
new_arr.reverse()
print("Reversed Array:",new_arr)

Выход :

Original Array is : array('i', )
Resultant new reversed Array: array('i', )

2. Использование обратного () метода

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

import array

#The original array
new_arr=array.array('i',)
print("Original Array is :",new_arr)

#reversing using reversed()
res_arr=array.array('i',reversed(new_arr))
print("Resultant Reversed Array:",res_arr)

Выход :

Original Array is : array('i', )
Resultant Reversed Array: array('i', )

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

NumPy представляет множество функций для создания массивов в заданном диапазоне. Разберем самые распространённые.

3.1. Создание диапазонов функцией arange

В библиотеке NumPy существует функция arange для создания целочисленных диапазонов, аналогичной встроенной функции range в Python.

>>> import numpy as np
>>> np.arange(7)array()
>>> np.arange(5, 10)array()
>>> np.arange(100, 10, -10)array()

При создании коллекций array вы можете воспользоваться встроенной функции Python range, но рекомендуется использовать именно arange, так как она оптимизирована для array. Все свойства arange аналогичны функции range. 

3.2. Создание диапазонов чисел с плавающей точкой функцией linspace

Для создания диапазонов чисел с плавающей точкой можно воспользоваться функцикй limspace библиотеки NumPy. 

>>> import numpy as np
>>> np.linspace(1.0, 2.0, num=5)array()
>>> np.linspace(1.0, 5.0, num=10)array()

В функции linspace первые два аргумента определяют начальное и конечное значение диапазона

Важно: конечное значение включается в array. Ключевой аргумент num необязательный. Он задает количество равномерно распределенных генерируемых значений

По умолчанию num = 50. 

3.3. Изменение размерности array методом reshape

Методом reshape вы можете преобразовать одномерную коллекцию в многомерную. В примере создадим коллекцию array с помощью со значениями от 1 до 36 и с помощью метода reshape преобразуем ее в структуру из 6 строк и 6 столбцов. 

>>> import numpy as np
>>> np.(1, 37).reshape(6, 6)array(,
       ,
       ,
       ,
       ,
       ])
>>> np.(1, 37).reshape(4, 9)array(,
       ,
       ,
       ])

Во втором примере мы преобразовали в структуру 4 строк и 9 столбцов. 

Размерность можно изменять для любой коллекции array, но при условии, что количество новой версии не будет отличаться от оригинала. Например, коллекцию из шести элементов, можно преобразовать в коллекцию 3*2 или 2*3. В нашем примере мы преобразовали коллекцию из 36 элементов в коллекцию 6*6 и 4*9. В случае неправильного преобразования, вы получите ошибку ValueError. 

3.4. Заполнение array конкретными значениями. Функции zeros, ones, full

Функция zeros создает коллекцию содержащие 0. Первым аргументом должно быть целое число или кортеж целых чисел. 

>>> import numpy as np
>>> np.zeros(7)array()
>>> np.zeros((3, 3))array(,
       ,
       ])

Функция ones создает коллекцию содержащие 1. 

>>> import numpy as np
>>> np.ones((3, 3))array(,
       ,
       ])

По умолчанию функции zeros и ones создают коллекции array, содержащие значения float. Для изменения типа значения можно задать аргумент dtype:

>>> import numpy as np

>>> np.ones((3, 3), dtype=int)array(,
       ,
       ])
>>> np.zeros((3, 3), dtype=int)array(,
       ,
       ])

Функция full, возвращает элементы со значением и типом второго аргумента:

>>> import numpy as np
>>> np.full((3, 4), 55)array(,
       ,
       ])
>>> np.full((2, 4), 21.2)array(,
       ])

3.5. Вывод больших коллекций array

При выводе больших коллекций array, NumPy исключает из вывода все строки и столбцы кроме первых трех и последних. Вместо исключенных данных проставляется знак многоточие.

>>> import numpy as np
>>> np.(1, 100001).(100, 1000)array(,
       ,
       ,
       …,
       ,
       ,
       ])

Syntax to Create an Array in Python

You can declare an array in Python while initializing it using the following syntax.

arrayName = array.array(type code for data type, )

The following image explains the syntax.

Array Syntax

  1. Identifier: specify a name like usually, you do for variables
  2. Module: Python has a special module for creating array in Python, called “array” – you must import it before using it
  3. Method: the array module has a method for initializing the array. It takes two arguments, type code, and elements.
  4. Type Code: specify the data type using the type codes available (see list below)
  5. Elements: specify the array elements within the square brackets, for example

Вопрос 8. В чём разница между remove, pop и del?

Сложность: (ー_ー)

Каждый из этих трёх методов (точнее, двух методов и одной команды) удаляет элементы списка. Но каждый делает это по-своему и, соответственно, применяется в разных ситуациях.

remove()

Метод remove() удаляет из списка первое совпадающее значение.

Возьмём список и удалим из него элемент ‘b’:

Первая ‘b’ исчезла, но вторая ‘b’ осталась в списке.

pop()

Метод pop() удаляет элемент по индексу и возвращает этот элемент:

Индексация в Python идёт с нуля, поэтому элемент с индексом 2 — третий по счёту. В последних строчках мы вывели изменённый список.

del

Команда del тоже удаляет элемент списка по его индексу, но имеет отличный от pop() синтаксис и ничего не возвращает:

Мы недосчитались четвёртого по индексу (и пятого по счёту) элемента, то есть ‘b’.

Также команда del может удалять из списка срезы (slices):

При указании границ среза в Python последний элемент в срез не входит. Поэтому из списка удалены элементы с третьего (индекс 2) по пятый (индекс 4), исключая последний, то есть 66.25 и 333.

Наконец, del может удалять целые переменные.

FrozenSets

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

Элементы frozenset множества не могут быть изменены после создания. Мы не можем изменять или добавлять содержимое замороженных наборов с помощью таких методов, как add() или remove().

Метод frozenset() используется для создания объекта frozenset. Итерируемая последовательность передается в этот метод, который преобразуется в замороженный набор в качестве возвращаемого типа метода.

Рассмотрим следующий пример, чтобы создать замороженное множество.

Frozenset = frozenset()     
print(type(Frozenset))    
print("\nprinting the content of frozen set...")    
for i in Frozenset:    
    print(i);    
Frozenset.add(6) #gives an error since we cannot change the content of Frozenset after creation

Вывод:

<class 'frozenset'>

printing the content of frozen set...
1
2
3
4
5
Traceback (most recent call last):
  File "set.py", line 6, in <module>
    Frozenset.add(6) #gives an error since we can change the content of Frozenset after creation 
AttributeError: 'frozenset' object has no attribute 'add'

Перестройка массива

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

Например, некоторые библиотеки, такие как scikit-learn, могут требовать, чтобы одномерный массив выходных переменных (y) был сформирован как двумерный массив с одним столбцом и результатами для каждого столбца.

Некоторые алгоритмы, такие как рекуррентная нейронная сеть с короткой кратковременной памятью в Keras, требуют ввода данных в виде трехмерного массива, состоящего из выборок, временных шагов и функций.

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

Форма данных

Массивы NumPy имеют атрибут shape, который возвращает кортеж длины каждого измерения массива.

Например:

При выполнении примера печатается кортеж для одного измерения.

Кортеж с двумя длинами возвращается для двумерного массива.

Выполнение примера возвращает кортеж с количеством строк и столбцов.

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

К элементам кортежа можно обращаться точно так же, как к массиву, с 0-м индексом для числа строк и 1-м индексом для количества столбцов. Например:

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

Изменить форму 1D в 2D Array

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

NumPy предоставляет функцию reshape () для объекта массива NumPy, который можно использовать для изменения формы данных.

Функция reshape () принимает единственный аргумент, который задает новую форму массива. В случае преобразования одномерного массива в двумерный массив с одним столбцом кортеж будет иметь форму массива в качестве первого измерения (data.shape ) и 1 для второго измерения.

Собрав все это вместе, мы получим следующий проработанный пример.

При выполнении примера печатается форма одномерного массива, изменяется массив, чтобы иметь 5 строк с 1 столбцом, а затем печатается эта новая форма.

Изменить форму 2D в 3D Array

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

Хорошим примером являетсямодель в библиотеке глубокого обучения Keras.

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

Мы можем использовать размеры в атрибуте shape в массиве, чтобы указать количество выборок (строк) и столбцов (временных шагов) и зафиксировать количество объектов в 1

Собрав все это вместе, мы получим следующий проработанный пример.

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

Разделение матрицы

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

import numpy as np
letters = np.array()

# с 3-го по 5-ый элементы
print(letters)        # Вывод: 

# с 1-го по 4-ый элементы
print(letters)        # Вывод:    

# с 6-го до последнего элемента
print(letters)         # Вывод:

# с 1-го до последнего элемента
print(letters)          # Вывод:

# список в обратном порядке
print(letters)          # Вывод:

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

import numpy as np

A = np.array(, 
    ,
    ])

print(A)  # две строки, четыре столбца

''' Вывод:

 ]
'''


print(A)  # первая строка, все столбцы

''' Вывод:
` 1  4  5 12 14`
'''

print(A)  # все строки, второй столбец

''' Вывод:

'''

print(A)  # все строки, с третьего по пятый столбец
''' Вывод:

 
 ]
'''

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

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

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

How to create arrays in Python?

In Python, we use following syntax to create arrays:

Class array.array(type code) 

For Example

import array as myarray
abc = myarray.array('d', )

The above code creates an array having integer type. The letter ‘d’ is a type code.

Following tables show the type codes:

Type code Python type C Type Min size(bytes)
‘u’ Unicode character Py_UNICODE 2
‘b’ Int Signed char 1
‘B’ Int Unsigned char 1
‘h’ Int Signed short 2
‘l’ Int Signed long 4
‘L’ Int Unsigned long 4
‘q’ Int Signed long long 8
‘Q’ Int Unsigned long long 8
‘H’ Int Unsigned short 2
‘f’ Float Float 4
‘d’ Float Double 8
‘i’ Int Signed int 2
‘I’ Int Unsigned int 2

Трансляция с помощью numpy.where()

Если мы предоставим все массивы condition, x и y, numpy будет транслировать их вместе.

import numpy as np

a = np.arange(12).reshape(3, 4)

b = np.arange(4).reshape(1, 4)

print(a)
print(b)

# Broadcasts (a < 5, a, and b * 10)
# of shape (3, 4), (3, 4) and (1, 4)
c = np.where(a < 5, a, b * 10)

print(c)

Вывод

 
 ]
`0 1 2 3`

 
 ]

Опять же, здесь вывод выбирается на основе условия, поэтому все элементы, но здесь b, транслируются в форму a. (Одно из его измерений имеет только один элемент, поэтому при трансляции ошибок не будет).

Итак, b теперь станет ], и теперь мы можем выбирать элементы даже из этого транслируемого массива. Таким образом, форма вывода такая же, как у файла.

Добавление элементов в множество

Python предоставляет методы add() и update(), которые можно использовать для добавления определенного элемента в набор. Метод add() используется для добавления одного элемента, тогда как метод update() используется для добавления нескольких элементов в набор. Рассмотрим следующий пример.

Пример 1. Использование метода add()

Months = set()    
print("\nprinting the original set ... ")    
print(months)    
print("\nAdding other months to the set...");    
Months.add("July");    
Months.add ("August");    
print("\nPrinting the modified set...");    
print(Months)    
print("\nlooping through the set elements ... ")    
for i in Months:    
    print(i)    

Выход:

printing the original set ... 
{'February', 'May', 'April', 'March', 'June', 'January'}

Adding other months to the set...

Printing the modified set...
{'February', 'July', 'May', 'April', 'March', 'August', 'June', 'January'}

looping through the set elements ... 
February
July
May
April
March
August
June
January 

Чтобы добавить в множество более одного элемента, Python предоставляет метод update(). Он принимает в качестве аргумента итерацию.

Пример 2. Использование функции update()

Months = set()    
print("\nprinting the original set ... ")    
print(Months)    
print("\nupdating the original set ... ")    
Months.update();    
print("\nprinting the modified set ... ")     
print(Months);  

Выход:

printing the original set ... 
{'January', 'February', 'April', 'May', 'June', 'March'}

updating the original set ... 
printing the modified set ... 
{'January', 'February', 'April', 'August', 'October', 'May', 'June', 'July', 'September', 'March'}

Вопрос 9. Чем список отличается от других структур?

Сложность: (> ⌒ <)

Такие вопросы надо отбивать особенно чётко. Если спрашивающий не услышит конкретные ключевые слова, его подозрительность повысится, а ваши шансы, наоборот, снизятся.

Список и кортеж (tuple)

Список можно менять после создания (например, с помощью функции append()), а кортеж нет: он защищает данные от изменений после создания. По этой причине кортеж можно использовать в качестве ключа в словарях, а список нельзя. Кроме того, кортеж обрабатывается интерпретатором Python чуть быстрее.

Список и множество (set)

Список упорядочен: каждый элемент списка имеет индекс, а элемент множества — нет. Список может содержать одинаковые значения, а во множестве каждое значение уникально. Проверка, принадлежит ли элемент множеству, выполняется быстрее, чем такая же проверка элемента списка.

Список и словарь (dictionary)

Словарь состоит из пар «ключ-значение», а список может состоять и из одиночных элементов, и из пар, и из троек — если элементами будут другие списки или кортежи. Ключи у словаря должны быть уникальными и иметь неизменяемый тип, у списка таких ограничений нет. Поиск по словарю быстрее, чем по списку.

Список и массив (array)

Для использования массива нужно вызывать библиотеку array, а списки встроены в Python. В массиве могут содержаться элементы только одного типа. Массив не может содержать другие массивы или списки. Массив занимает меньше памяти и поэтому быстрее, чем одномерный список.

Заметили, что вам не нужно импортировать модуль array?

Этот синтаксис объявляет список под названием cars. В квадратных скобках объявляется каждый элемент списка. Каждый элемент является строкой, поэтому их объявляют внутри кавычек. Python знает, что это объект, поэтому оператор print выводит содержимое списка:

print cars

Как и в случае с массивом, можно осуществлять Python сортировку массива с помощью циклов:

for car in cars:
    print car

Настоящий фокус со списками — их смешанный тип. Добавьте дополнительные данные:

cars = 

Это даже не вызвало исключения:

Также просто добавить новые элементы в список (что невозможно с массивами):

cars = 
print cars
cars.append('Lancia')
print cars

Можно объединить два списка в один:

cars = 
print cars
other_cars = 
cars.extend(other_cars)
print cars

Также легко удалить элементы Python ассоциативного массива, используя синтаксис remove:

cars = 
print cars
cars.remove('Ford')
print cars

ВЛВиктория Лебедеваавтор-переводчик статьи «How Arrays and Lists Work in Python»

Структуры данных Python

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

Возможно, вы слышали о линейных типах данных (элементы последовательны):

  • Массив;
  • Матрица;
  • Таблица поиска.

Аналогичным образом, списки часто содержат правила и методы для регулирования того, как они работают. Типы списков:

  • Связный список;
  • Двойной связный список;
  • Список массивов или динамический массив.

Существует множество различных структур данных. Возможно, вы слышали о бинарных деревьях, графах или хэшах.

Как преобразовать список 1D Python в Numpy Array?

Проблема : Учитывая одномерный список Python. Как преобразовать его в Numpy Array?

Пример : У вас есть следующий 1d Python список целых чисел.

lst = 

Вы хотите преобразовать его в Numpy Array.

array()

Метод 1: NP.array (…)

Самый простой способ преобразовать список Python в Numpy Array – использовать Функция, которая предпринимает и возвращает Numpy Array.

import numpy as np
lst = 
print(np.array(lst))

Вывод:

# 

Это создает новую структуру данных в памяти. Изменения в исходном списке не видны переменной, которая содержит Numpy Array:

lst = 
a = np.array(lst)
lst.append(999)
print(a)
# 

Элемент который сейчас является частью списка не является частью массива Отказ

Способ 2: np.asarray (…)

Альтернатива – использовать Функция, которая принимает один аргумент – итабельный – и преобразует его в Numpy Array. Разница в Это то, что он не создает новую копию в памяти, если вы передаете небольшой массив. Все изменения, сделанные на оригинальном массиве, отражены на Numpy Array! Так что будь осторожен.

lst = 
a = np.array(lst)
b = np.asarray(a)
a = 99
print(b)
# 

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

Куда пойти отсюда?

Достаточно теории, давайте познакомимся!

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

Практические проекты – это то, как вы обостряете вашу пилу в кодировке!

Вы хотите стать мастером кода, сосредоточившись на практических кодовых проектах, которые фактически зарабатывают вам деньги и решают проблемы для людей?

Затем станьте питоном независимым разработчиком! Это лучший способ приближения к задаче улучшения ваших навыков Python – даже если вы являетесь полным новичком.

Присоединяйтесь к моему бесплатным вебинаре «Как создать свой навык высокого дохода Python» и посмотреть, как я вырос на моем кодированном бизнесе в Интернете и как вы можете, слишком от комфорта вашего собственного дома.

Присоединяйтесь к свободному вебинару сейчас!

Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.

Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python One-listers (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.

Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.

Объединение массивов

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

Пример

 
a=arr.array('d',) 
b=arr.array('d',) 
c=arr.array('d') 
c=a+b 
print("Array c = ",c) 

Выход:

Array c= array('d', ) 

Объяснение

В приведенном выше примере мы определили переменные с именами «a, b, c», которые содержат значения массива.

Пример

 
import array as arr 
x = arr.array('i', ) 
print("First element:", x) 
print("Second element:", x) 
print("Second last element:", x) 

Выход:

First element: 4 
Second element: 7 
Second last element: 22 

Объяснение: Мы импортировали массив и определили переменную с именем «x», которая содержит значение массива, а затем напечатали элементы, используя индексы.

Изучаю Python вместе с вами, читаю, собираю и записываю информацию опытных программистов.

Изменение размеров и транспонирование массива в Python

В NumPy существует много возможностей для изменения размера массивов.

8.1. Метод resize

Метод resize изменяет размер исходной коллекции array:

>>> import numpy as np
>>> numbers = np.array()
>>> numbersarray()
>>> numbers.resize(3, 2)
>>> numbersarray(,
       ,
       ])

8.2. Методы flatten и ravel

Метод flatten выполняет глубокое копирование данных исходной коллекции

>>> import numpy as np
>>> numbers = np.array()
>>> numbers_fl = numbers.flatten()
>>> numbers_flarray()

Чтобы проверить что numbers и numbers_fl  не используют общие данные изменим элемент numbers_fl и выведем оба массива:

>>> numbers_fl[] = 77
>>> numbers_flarray()
>>> numbersarray()

Значение в numbers_fl  изменилось, значит массивы уже не связаны между собой. 

метод ravel создает представление (поверхностную копию) исходной коллекции array, которое использует общие данные.

>>> numbersarray()
>>> numbers_ra = numbers.ravel()
>>> numbers_raarray()

Чтобы проверить использование общих данных, изменим один элемент numbers_ra:

>>> numbers_ra[] =125
>>> numbers_raarray()
>>> numbersarray()

В результате значения поменялись в обоих массивах.

8.3. Транспонирование строк и столбцов

С помощью атрибута T вы можете быстро транспонировать строки и столбцы маcсива, то есть сделать так чтобы строки стали столбцами, а столбцы строками. 

>>> import numpy as np
>>> numbers = np.array(, ])
>>> numbersarray(,
       ])
>>> numbers.Tarray(,
       ,
       ])

Транспонирование не изменяет исходную коллекцию array.

8.4. Горизонтальное и вертикальное дополнение. Функции hstack и vstack

Добавление новых строк или столбцов, называется горизонтальным или вертикальным дополнением. Допустим у нас есть две коллекции array, и мы хотим объединить их в одну. Для этого можно воспользоваться функцией hstack() из библиотеки NumPy. Функцие hstack() передается кортеж с объединяемыми коллекциями:

>>> import numpy as np
>>> numbers_1 = np.array()
>>> numbers_2 = np.array()
>>> np.hstack((numbers_1, numbers_2))array()

В случае если нам требуется объединить массивы добавлением, можно воспользоваться функцией vstack():

>>> np.vstack((numbers_1, numbers_2))array(,
       ])

Please enable JavaScript to view the comments powered by Disqus.

Создание двумерных массивов

Создать такой массив в Python можно разными способами. Разберем первый:

# Создание таблицы с размером 3x3, заполненной нулями
a = 3           
mas =  * a 
for i in range(a): 
    mas =  * a 
print(mas) # Выведет , , ]     

Второй способ предполагает создание пустого списка с добавлением в него новых списков. Рассмотрим на примере:

# Создание таблицы с размером 2x2, заполненной единицами
a = 2
mas = [] 
for i in range(a): 
    mas.append( * a)
print(mas) # Выведет , , ]                                 

Третьим и самым простым способом является генератор списков с x строками, которые будут состоять из y элементов. Пример: 

# Создание таблицы с размером 3x3, заполненной двойками
a = 3
mas =  * a for i in range(a)]
print(mas) # Выведет , , ]

Объединение массивов

NumPy предоставляет множество функций для создания новых массивов из существующих массивов.

Давайте рассмотрим две наиболее популярные функции, которые вам могут понадобиться или с которыми вы столкнетесь.

Вертикальный стек

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

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

Это продемонстрировано в примере ниже.

Выполнение примера сначала печатает два отдельно определенных одномерных массива. Массивы вертикально сложены, что приводит к новому массиву 2 × 3, содержимое и форма которого печатаются.

Горизонтальный стек

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

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

Это продемонстрировано в примере ниже.

Выполнение примера сначала печатает два отдельно определенных одномерных массива. Затем массивы располагаются горизонтально, что приводит к созданию нового одномерного массива с 6 элементами, содержимое и форма которого печатаются

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

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

Adblock
detector