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입니다. 축이 정의되지 않으면, 가로 방향으로 추가되며, 항상 일维 배열을 반환합니다! 축이 정의되어 있을 때, 각각 0과1그때. 축이 정의되어 있을 때, 각각 0과1그때( 열 수가 같아야 합니다). 축이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('원 배열의 인덱스와 일치하는 각 값을 확인할 수 있습니다:')
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]