English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Добавление и удаление элементов массивов NumPy

операции добавления и удаления массива,常用的函数如下:

функцииэлементы и описание
resizeвозвратить новый массив с заданной формой
appendдобавить значение в конец массива
insert沿指定轴将值插入到指定下标之前
delete删掉某个轴的子数组,并返回删除后的新数组
unique查找数组内的唯一元素

numpy.resize

numpy.resize 函数返回指定大小的新数组。

如果新数组大小大于原始大小,则包含原始数组中的元素的副本。

numpy.resize(arr, shape)

Описания параметров:

arr:要修改大小的数组shape:返回数组的新形状

import numpy as np
a = np.array([[1, 2, 3, 4, 5, 6, 7, 8], [4, 5, 6, 7, 8, 9, 10, 11]])
print('Первый массив:')
print(a)
print('\n')
print('第一个数组的形状:')
print(a.shape)
print('\n')
b = np.resize(a, (4, 2))
print('第二个数组:')
print(b)
print('\n')
print('第二个数组的形状:')
print(b.shape)
print('\n')
 #要注意 a 的第一行在 b 中重复出现,因为尺寸变大了
print('修改第二个数组的大小:')
b = np.resize(a, (5, 5))
print(b)

Результат вывода:

Первый массив:
[[ 1 2 3 4 5 6 7 8]
 [ 4 5 6 7 8 9 10 11]]
第一个数组的形状:
(2, 8)
第二个数组:
[[1 2]
 [3 4]
 [5 6]
 [7 8]
第二个数组的形状:
(4, 2)
修改第二个数组的大小:
[[1 2 3 4 5]
 [6 7 8 4 5]
 [6 7 8 9 10]
 [11 1 2 3 4]
 [5 6 7 8 4]

numpy.append

numpy.append 函数在数组的末尾添加值。 追加操作会分配整个数组,并把原来的数组复制到新数组中。 此外,输入数组的维度必须匹配否则将生成ValueError。

append 函数返回的始终是一个一维数组。

numpy.append(arr, values, axis=None)

Описания параметров:

arr: вводной массивvalues:要向arr添加的值,需要和arr形状相同(除了要添加的轴)axis:默认为 None。当axis无定义时,是横向加成,返回总是为一维数组!当axis有定义的时候,分别为0和1的时候。当axis有定义的时候,分别为0和1的时候(列数要相同)。当axis为1时,数组是加在右边(行数要相同)。

import numpy as np
a = np.array([[1, 2, 3, 4, 5, 6, 7, 8], [4, 5, 6, 7, 8, 9, 10, 11]])
print('Первый массив:')
print(a)
print('\n')
print('向数组添加元素:')
print(np.append(a, [7, 8, 9]))
print('\n')
print('沿轴 0 添加元素:')
print (np.append(a, [[1,2,3,4,5,6,7,8]], axis=0))
print('\n')
print ('добавление элементов по оси 1:')
print (np.append(a, [[5,5,5,5,5,5,5],[7,8,9,7,8,9,1]], axis=1))

Результат вывода:

Первый массив:
[[ 1 2 3 4 5 6 7 8]
 [ 4 5 6 7 8 9 10 11]]
добавление элементов в массив:
[ 1 2 3 4 5 6 7 8 4 5 6 7 8 9 10 11 7 8 9]
добавление элементов по оси 0:
[[ 1 2 3 4 5 6 7 8]
 [ 4 5 6 7 8 9 10 11]
 [ 1 2 3 4 5 6 7 8]
добавление элементов по оси 1:
[[ 1 2 3 4 5 6 7 8 5 5 5 5 5 5 5]]
 [ 4 5 6 7 8 9 10 11 7 8 9 7 8 9 1]]

numpy.insert

функция numpy.insert вставляет значения перед заданным индексом в входной массив по заданной оси.

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

numpy.insert(arr, obj, values, axis)

Описания параметров:

arr: вводной массивobj: индекс, в который вставляются значенияvalues: значения для вставкиaxis: ось, по которой выполняется вставка, если не указано, то входной массив будет развернут

import numpy as np
a = np.array([[1,2],[3,4],[5,6]])
 
print('Первый массив:')
print(a)
print('\n')
 
print('Не передан параметр Axis. Вводный массив будет развёрнут перед вставкой.')
print (np.insert(a, 3, [11, 12]))
print('\n')
print ('передан параметр Axis. Будет передаваться массив значений для соответствия входному массиву.')
 
print ('передача по оси 0:')
print (np.insert(a, 1, [11], axis=0))
print('\n')
 
print ('передача по оси 1:')
print (np.insert(a, 1, 11, axis=1))

результат вывода:

Первый массив:
[[1 2]
 [3 4]
 [5 6]]
Не передан параметр Axis. Вводный массив будет развёрнут перед вставкой.
[ 1 2 3 11 12 4 5 6]
передан параметр Axis. Будет передаваться массив значений для соответствия входному массиву.
передача по оси 0:
[[ 1 2]
 [11 11]
 [ 3 4]
 [ 5 6]]
передача по оси 1:
[[ 1 11 2]
 [ 3 11 4]
 [ 5 11 6]]

numpy.delete

Функция numpy.delete возвращает новый массив, удалённый из вводного массива по заданному подмассиву. Как и в случае с функцией insert(), если не указан параметр оси, вводной массив будет развёрнут.

Numpy.delete(arr, obj, axis)

Описания параметров:

arr: вводной массивobj: может быть срезом, целым числом или массивом целых чисел, указывающим на подмассив, который нужно удалить из вводного массиваaxis: по которому удаляется заданный подмассив, если не указан, вводный массив будет развёрнут

import numpy as np
 
a = np.arange(12).reshape(3, 4)
 
print('Первый массив:')
print(a)
print('\n')
 
print('Не передан параметр Axis. Вводный массив будет развёрнут перед вставкой.')
print(np.delete(a, 5))
print('\n')
 
print('Удалить вторую колонку:')
print(np.delete(a, 1, axis=1))
print('\n')
 
print('Срез замены удалённых значений из массива:')
a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
print(np.delete(a, np.s_[::2]))

Результат вывода:

Первый массив:
[[0 1 2 3]
 [4 5 6 7]
 [8 9 10 11]
Не передан параметр Axis. Вводный массив будет развёрнут перед вставкой.
[0 1 2 3 4 6 7 8 9 10 11]
Удалить вторую колонку:
[[0 2 3]
 [4 6 7]
 [8 10 11]
Срез замены удалённых значений из массива:
[2 4 6 8 10]

numpy.unique

Функция numpy.unique используется для удаления повторяющихся элементов из массива.

numpy.unique(arr, return_index, return_inverse, return_counts)

arr: входной массив, если не одномерный массив, будет развёрнутreturn_index: если true, возвращает положение новых элементов в старом списке (индекс), хранящееся в спискеreturn_inverse: если true, возвращает положение старых элементов в новом списке (индекс), хранящееся в спискеreturn_counts: если true, возвращает количество出现的元素在原始 массиве уникального массива

import numpy as np
 
a = np.array([5, 2, 6, 2, 7, 5, 6, 8, 2, 9])
 
print('Первый массив:')
print(a)
print('\n')
 
print('Первая уникальная строка массива:')
u = np.unique(a)
print(u)
print('\n')
 
print('Индексный массив уникального массива:')
u,indices = np.unique(a,return_index=True)
print(indices)
print('\n')
 
Мы можем видеть значения, соответствующие индексам исходного массива:
print(a)
print('\n')
 
print('Индексы уникального массива:')
u,indices = np.unique(a,return_inverse=True)
print(u)
print('\n')
 
print('Индекс: ')
print(indices)
print('\n')
 
print('Использовать индексы для重构 исходного массива:')
print(u[indices])
print('\n')
 
print('Вернуть количество повторений уникальных элементов:')
u,indices = np.unique(a,return_counts=True)
print(u)
print(indices)

Результат вывода:

Первый массив:
[5 2 6 2 7 5 6 8 2 9]
Уникальное значение первого массива:
[2 5 6 7 8 9]
Индексный массив уникального массива:
[1 0 2 4 7 9]
Мы можем видеть значения, соответствующие индексам исходного массива:
[5 2 6 2 7 5 6 8 2 9]
Индексы уникального массива:
[2 5 6 7 8 9]
Индекс:
[1 0 2 0 3 1 2 4 0 5]
Использовать индексы для重构 исходного массива:
[5 2 6 2 7 5 6 8 2 9]
Вернуть количество повторений уникальных элементов:
[2 5 6 7 8 9]
[3 2 2 1 1 1]