Объект массива в Numpy называется ndarray. Мы можем создать объект numpy ndarray, используя функцию array(). Метод Numpy.append() в Python добавляет значения по указанной оси в конец массива.
Вы должны установить numpy для этого руководства. Кроме того, проверьте свою версию numpy.
- Что такое функция np.append() в Python?
- Синтаксис
- Параметры
- Возвращаемое значение
- Примеры программ с методом numpy.append()
- Программа 1: Работа с одномерным массивом
- Программа 2: Работа с 2D-массивом
- Сведение двух массивов в Numpy
- Объединение двух массивов вдоль оси с помощью np.append()
- Python numpy: ValueError
- Сравнение Numpy append() и concatenate()
- Заключение
Что такое функция np.append() в Python?
Функция numpy.append() в Python используется для объединения двух массивов. Функция np.append() возвращает новый массив, а исходный массив остается неизменным. append() используется для добавления одного массива к другому, а затем возвращает объединенный массив.
Синтаксис
|
1 |
numpy.append(array, values, axis = None) |
Параметры
Метод numpy.append() принимает три аргумента:
- array: это может быть массив или объект массива, к которому будет выполняться добавление некоторых значений.
- values: это значение, которое будет добавлено к массиву.
- axis: указывает ось массива, вдоль которой значение должно быть добавлено. В основном есть два типа осей:
- axis=1 -> указывает ось первой строки
- axis=0 -> предлагает ось первого столбца.
Возвращаемое значение
Функция append() возвращает копию массива со значениями, добавленными в конце, в соответствии с указанной осью.
Примеры программ с методом numpy.append()
Программа 1: Работа с одномерным массивом
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# Importing numpy import numpy as np # We will create an 1D array # this will create an array with values 0 to 5 arr1 = np.arange(6) # Printing the array print("The first array is: ", arr1) # Creating a 2nd array arr2 = np.arange(10, 16) print("The second array is: ", arr2) # Now we will append arr2 to arr1 # result will be copied to a new array arr = np.append(arr1, arr2) # Printing the new array print("After append the new array is: ", arr) |
Выход
|
1 2 3 |
The first array is: [0 1 2 3 4 5] The second array is: [10 11 12 13 14 15] After append the new array is: [ 0 1 2 3 4 5 10 11 12 13 14 15] |
В этой программе мы видим, что сначала мы создали два массива с помощью функции arange(), которая создает массив с некоторым заданным диапазоном значений. После этого мы напечатали эти два массива соответственно.
Наконец, мы вызвали функцию append(), в которой мы добавили arr2 к arr1. Здесь мы видим, что в данном случае мы не указали axis; это потому, что данные массивы являются одномерными массивами. Ось определена в многомерном массиве.
Программа 2: Работа с 2D-массивом
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# Importing numpy import numpy as np # Creating a 2D array with shape 2x3 arr1 = np.array([(1, 2, 3),(4, 5, 6)]) print("The first array is:\n", arr1) # Creating a second 2D array using arange function # This will create a 2D array of shape 2x3 with values 10 to 15 arr2 = np.arange(10, 16).reshape(2, 3) print("The second array is:\n", arr2) # Now we will first append the array by axis 1 arr3 = np.append(arr1, arr2, axis=1) print("After append by axis 1, new array is:\n", arr3) # Now we will first append the array by axis 0 arr4 = np.append(arr1, arr2, axis=0) print("After append by axis 0, new array is:\n", arr4) |
Выход
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
The first array is: [[1 2 3] [4 5 6]] The second array is: [[10 11 12] [13 14 15]] After append by axis 1, new array is: [[ 1 2 3 10 11 12] [ 4 5 6 13 14 15]] After append by axis 0, new array is: [[ 1 2 3] [ 4 5 6] [10 11 12] [13 14 15]] |
В этой программе мы создали массив с помощью numpy arange() и объявили два массива формы 2×3 двумя разными способами. Затем мы вызвали функцию append(), чтобы добавить arr2 к arr1 по оси 1; это добавит row1 из arr1 с row1 из arr2 и так далее.
Затем мы снова вызвали функцию append(), чтобы добавить arr2 к arr1 с осью = 0, что означает, что она добавит столбец 1 из arr1 со столбцом 1 из arr2 и так далее.
Наконец, мы можем увидеть результат этих двух операций.
Сведение двух массивов в Numpy
Под «выравниванием» массива мы подразумеваем преобразование многомерного массива в обычный «одномерный» массив.
См. следующий код.
|
1 2 3 4 5 6 7 8 9 10 11 |
# app.py import numpy as np arrA = np.array([[11, 21], [30, 46]]) arrB = np.array([[19, 21], [46, 21]]) # no axis provided, array elements will be flattened arr_flat = np.append(arrA, arrB) print(arr_flat) |
Выход
|
1 2 |
python3 app.py [11 21 30 46 19 21 46 21] |
Как видим, мы не указали ни одной оси; поэтому он сглаживает массив.
Объединение двух массивов вдоль оси с помощью np.append()
Мы можем объединить два массива вдоль оси, используя функцию numpy append(). См. следующий код.
|
1 2 3 4 5 6 7 |
import numpy as np arr_merge_axis0 = np.append([[11, 21], [29, 46]], [[19, 21], [37, 10]], axis=0) print(f'Merged 2x2 Arrays along Axis-0:\n{arr_merge_axis0}') arr_merge_axis1 = np.append([[11, 21], [29, 46]], [[19, 21], [37, 10]], axis=1) print(f'Merged 2x2 Arrays along Axis-1:\n{arr_merge_axis1}') |
Выход
|
1 2 3 4 5 6 7 8 9 |
python3 app.py Merged 2x2 Arrays along Axis-0: [[11 21] [29 46] [19 21] [37 10]] Merged 2x2 Arrays along Axis-1: [[11 21 19 21] [29 46 37 10]] |
Из вывода мы можем получить следующие утверждения.
- Когда массивы 2 × 2 объединяются с осью x, размер выходного массива составляет 4 × 2.
- Когда массивы 2 × 2 объединяются с осью Y, размер выходного массива составляет 2 × 4.
Python numpy: ValueError
Давайте посмотрим на пример, где будет выведена ошибка ValueError.
|
1 2 3 4 |
import numpy as np arr = np.append([[11, 21]], [[10, 19, 46]], axis=0) print(arr) |
Выход
|
1 2 3 4 5 6 7 |
python3 app.py Traceback(most recent call last): File "app.py", line 3, in <module> arr = np.append([[11, 21]], [[10, 19, 46]], axis=0) File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/numpy/lib/function_base.py", line 4689, in append return concatenate((arr, values), axis=axis) ValueError: all the input array dimensions except for the concatenation axis must match exactly |
Формы массива 1×2 и 2×3. Итак, формы axis-1 разные; Возникает ValueError.
Сравнение Numpy append() и concatenate()
Функция Numpy concatenate() работает немного быстрее, а append() сглаживает массив, если ось не указана. np.append использует np.concatenate. См. следующий фрагмент.
|
1 2 3 4 5 6 7 8 |
def append(arr, values, axis=None): arr = asanyarray(arr) if axis is None: if arr.ndim != 1: arr = arr.ravel() values = ravel(values) axis = arr.ndim-1 return concatenate((arr, values), axis=axis) |
Функция append() использует конкатенацию в базовой реализации.
Заключение
Функция Numpy append() добавляет значения в конец входного массива и выделяется новый массив. Здесь следует отметить, что размеры входных массивов должны совпадать; в противном случае будет получено значение ValueError.
