ValueError 수정: Python에서 시퀀스로 배열 요소 설정

Zeeshan Afridi 2023년10월8일
  1. Python의 Numpy 배열
  2. Python에서 Numpy 배열 만들기
  3. Python에서 ValueError: set an array element with a sequence 오류의 원인
  4. Python에서 ValueError: set an array element with a sequence 오류 수정
ValueError 수정: Python에서 시퀀스로 배열 요소 설정

Python에서 배열은 가장 일반적이고 유용한 데이터 구조 중 하나이며 둘 이상의 값 모음입니다. 배열의 요소는 요소의 위치인 인덱스를 통해 액세스됩니다.

어느 시점에서 ValueError: 배열 요소를 시퀀스로 설정 오류와 어떻게든 상호 작용했을 수 있습니다. 이 ValueError는 주로 두 가지 시나리오에서 발생합니다. 첫 번째는 단일 배열 인덱스에 여러 값을 할당하려고 할 때이고 두 번째는 정의된 배열에 잘못된 데이터 유형을 할당하려고 할 때입니다.

아시다시피 배열은 본질적으로 동질적입니다. 어레이 전체에서 단일 데이터 유형을 허용합니다.

Python의 Numpy 배열

Numpy는 메트릭, 선형 대수, 푸리에 변환 등에 가장 많이 사용되는 오픈 소스 라이브러리입니다. 2005년 Travis Oliphant에 의해 만들어졌습니다.

Python에는 배열의 목적을 제공하는 목록이 있지만 Numpy 제작자는 목록보다 50배 빠른 배열을 증명한다고 주장합니다. 이것은 Numpy 배열을 사용하는 핵심 목적 중 하나입니다.

Python에서 Numpy 배열 만들기

Numpy 배열의 구문은 매우 간단합니다. numpy 라이브러리를 프로그램으로 가져와 그에 따라 사용해야 합니다.

# import numpy library
import numpy as np

# creating a numpy array
arr = np.array([1, 2, 4, 5, 6])

print(arr)

출력:

[1 2 4 5 6]

기존 배열을 Numpy 배열로 변환할 수도 있습니다.

# import numpy library
import numpy as np

conventional_array = [1, 2, 3, 4, 5]
print("The data type conventional array is: ", type(conventional_array))

# converting a conventional array into a numpy array
arr = np.array(conventional_array)

print("The data type of numpy array is: ", type(arr))
print(arr)

출력:

The data type conventional array is:  <class 'list'>
The data type of numpy array is:  <class 'numpy.ndarray'>
[1 2 3 4 5]

기존 배열의 유형은 list 클래스에 속하지만 Numpy 배열로 변환한 후에는 이제 numpy.ndarray 클래스에 속합니다.

Python에서 ValueError: set an array element with a sequence 오류의 원인

논의한 바와 같이 Python에서 단일 위치에 둘 이상의 값을 할당하거나 배열에 부적절한 데이터 유형을 할당하려고 하면 ValueError: 시퀀스가 있는 배열 요소 설정 오류가 발생합니다. 아시다시피 배열은 단일 배열에 여러 데이터 유형을 저장할 수 없는 동종 데이터 구조입니다.

예제를 통해 이 두 가지 시나리오를 모두 이해해 봅시다.

# import numpy library
import numpy as np

arr = [1, 2, 3, 4, 5, 6, 7]
numpy_arr = np.array(arr)

# print the element at 0 index, which is the first element
print("The first element of the array: ", numpy_arr[0])

# assign two values (1,2) to the 0th index  --> Error
numpy_arr[0] = 1, 2

출력:

The first element of the array:  1
ValueError: setting an array element with a sequence.

위 프로그램의 마지막 코드에서 볼 수 있듯이 numpy_arr0 인덱스에 1,2 두 값을 할당하려고 하면 ValueError: set a array element with a sequence.

이는 인덱스에 단일 값만 저장할 수 있기 때문입니다. 그러나 단일 인덱스가 개별 값을 가리키도록 다른 값으로 바꿀 수 있습니다.

이제 두 번째 시나리오를 살펴보겠습니다.

# import numpy library
import numpy as np

# Creating an array
array1 = [1, 2, [0, 0], 4, 5]
print(array1)
print("The data type of the conventional array is: ", type(array1))

# This causes Value error
np_array = np.array(array1, int)

print("\n", np_array)
print("The data type of of numpy array is: ", type(np_array))

출력:

[1, 2, [0, 0], 4, 5]
The data type of the conventional array is:  <class 'list'>
ValueError: setting an array element with a sequence.

이 경우 numpy 배열에 할당한 데이터 유형이 이 오류의 원인입니다. 이 구문 np_array = np.array(array1, int)에서 두 번째 매개변수 int로 인해 이 오류가 발생합니다.

보시다시피 array1의 클래스는 목록이므로 직접 int로 변환할 수 없습니다.

Python에서 ValueError: set an array element with a sequence 오류 수정

이제 위의 예에서 ValueError의 원인을 확인했습니다. 이 ValueError를 수정하는 방법을 살펴보고 이해해 봅시다.

첫 번째 시나리오는 매우 간단합니다. 단일 인덱스에 하나의 값만 할당합니다.

# import numpy library
import numpy as np

# creating a numpy array
numpy_arr = np.array([1, 2, 3, 4, 5])
print(numpy_arr)

# assigning 0 value at the 0th index
numpy_arr[0] = 0
print(numpy_arr)

출력:

[1 2 3 4 5]
[0 2 3 4 5]

두 번째 시나리오에서는 모든 경우에 허용되는 범용 데이터 유형인 object를 사용할 수 있습니다. 아래 예에서 살펴보겠습니다.

# import numpy library
import numpy as np

# creating an array
arr = [1, 2, [9, 8], 3, 4]

# This causes Value error
np_arr = np.array(arr, object)

print(np_arr)

출력:

[1 2 list([9, 8]) 3 4]

보시다시피 데이터 유형을 int에서 object로 변경한 후 프로그램이 원활하게 실행되었습니다. 객체는 범용 데이터 유형이므로 목록이든 단일 int 값이든 배열의 모든 부분을 객체로 취급합니다.

Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn

관련 문장 - Python Error