NumPy 배열 요소 이동
NumPy 배열 요소 이동
슬라이싱 및 할당:
import numpy as np
# 배열 생성
arr = np.array([1, 2, 3, 4, 5])
# 오른쪽으로 한 칸 이동
arr = arr[1:] + [0]
# 출력
print(arr)
# [2 3 4 5 0]
np.roll 함수:
# 오른쪽으로 한 칸 이동
arr = np.roll(arr, 1)
# 출력
print(arr)
# [2 3 4 5 0]
np.shift 함수:
# 오른쪽으로 한 칸 이동
arr = np.shift(arr, 1, axis=0)
# 출력
print(arr)
# [2 3 4 5 0]
# 오른쪽으로 한 칸 이동
arr = np.circshift(arr, 1)
# 출력
print(arr)
# [2 3 4 5 0]
np.concatenate 함수:
# 오른쪽으로 한 칸 이동
arr = np.concatenate((arr[1:], [0]))
# 출력
print(arr)
# [2 3 4 5 0]
위의 방법들은 모두 NumPy 배열의 요소를 오른쪽으로 한 칸 이동하는 예시입니다. 왼쪽으로 이동하거나, 특정 위치로 이동하려면 axis
인수를 사용하거나 슬라이싱 방식을 조정하면 됩니다.
참고:
np.roll
함수는 배열을 회전하는 데 사용할 수 있습니다.np.shift
함수는 배열을 특정 방향으로 이동하는 데 사용할 수 있습니다.
추가 정보
예제 코드
import numpy as np
# 1D 배열
arr1 = np.array([1, 2, 3, 4, 5])
# 2D 배열
arr2 = np.array([[1, 2, 3], [4, 5, 6]])
# 3D 배열
arr3 = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
# ## 1. 슬라이싱 및 할당
# 1D 배열 오른쪽으로 한 칸 이동
arr1 = arr1[1:] + [0]
# 2D 배열 아래쪽으로 한 칸 이동
arr2 = np.concatenate((arr2[1:], [arr2[0, :]]))
# 3D 배열 앞쪽으로 한 칸 이동
arr3 = np.concatenate((arr3[1:], arr3[0:1, :, :]), axis=0)
# ## 2. np.roll 함수
# 1D 배열 오른쪽으로 두 칸 이동
arr1 = np.roll(arr1, 2)
# 2D 배열 오른쪽으로 한 칸씩 순환 이동
arr2 = np.roll(arr2, 1, axis=1)
# 3D 배열 앞쪽으로 두 칸씩 순환 이동
arr3 = np.roll(arr3, 2, axis=0)
# ## 3. np.shift 함수
# 1D 배열 왼쪽으로 한 칸 이동
arr1 = np.shift(arr1, -1)
# 2D 배열 위쪽으로 한 칸 이동
arr2 = np.shift(arr2, -1, axis=0)
# 3D 배열 뒤쪽으로 두 칸 이동
arr3 = np.shift(arr3, -2, axis=2)
# ## 4. np.circshift 함수
# 1D 배열 오른쪽으로 한 칸 이동 (양 끝 연결)
arr1 = np.circshift(arr1, 1)
# 2D 배열 오른쪽으로 한 칸씩 순환 이동 (양 끝 연결)
arr2 = np.circshift(arr2, 1, axis=1)
# 3D 배열 앞쪽으로 두 칸씩 순환 이동 (양 끝 연결)
arr3 = np.circshift(arr3, 2, axis=0)
# ## 5. np.concatenate 함수
# 1D 배열 오른쪽으로 한 칸 이동
arr1 = np.concatenate((arr1[1:], [arr1[0]]))
# 2D 배열 아래쪽으로 한 칸 이동
arr2 = np.concatenate((arr2[1:], [arr2[0, :]]))
# 3D 배열 앞쪽으로 한 칸 이동
arr3 = np.concatenate((arr3[1:], arr3[0:1, :, :]), axis=0)
# 출력
print("1D 배열:")
print(arr1)
print("2D 배열:")
print(arr2)
print("3D 배열:")
print(arr3)
참고
- 위 코드는 예시이며, 상황에 따라 코드를 수정해야 할 수도 있습니다.
- NumPy 배열 함수에 대한 자세한 내용은 NumPy 문서를 참고하십시오.
NumPy 배열 요소 이동 대체 방법
for 루프:
import numpy as np
# 1D 배열
arr1 = np.array([1, 2, 3, 4, 5])
# 오른쪽으로 한 칸 이동
for i in range(len(arr1) - 1):
arr1[i], arr1[i + 1] = arr1[i + 1], arr1[i]
# 출력
print(arr1)
# [2 3 4 5 1]
list.reverse():
# 1D 배열
arr1 = np.array([1, 2, 3, 4, 5])
# 오른쪽으로 한 칸 이동
arr1 = list(arr1)
arr1.reverse()
arr1 = np.array(arr1)
# 출력
print(arr1)
# [2 3 4 5 1]
np.flipud 및 np.fliplr 함수:
# 2D 배열
arr2 = np.array([[1, 2, 3], [4, 5, 6]])
# 위쪽으로 뒤집기
arr2 = np.flipud(arr2)
# 오른쪽으로 뒤집기
arr2 = np.fliplr(arr2)
# 출력
print(arr2)
# [[6 5 4]
# [3 2 1]]
np.where 함수:
# 1D 배열
arr1 = np.array([1, 2, 3, 4, 5])
# 오른쪽으로 한 칸 이동
arr1 = np.where(np.arange(len(arr1)) == 0, arr1[-1], arr1[:-1])
# 출력
print(arr1)
# [2 3 4 5 1]
선택 가이드
사용할 방법은 상황에 따라 다릅니다. 다음은 선택에 도움이 되는 몇 가지 지침입니다.
- 배열 크기: 작은 배열의 경우
for
루프나list.reverse()
함수가 가장 간단할 수 있습니다. - 배열 차원: 1D 배열의 경우 슬라이싱 및 할당,
np.roll
,np.shift
,np.circshift
,np.concatenate
함수가 유용합니다. 2D 배열 이상의 경우np.flipud
및np.fliplr
함수가 유용할 수 있습니다. - 성능: 속도가 중요한 경우
np.roll
,np.shift
,np.circshift
함수가 가장 효율적일 수 있습니다.
참고
python numpy