Python ValueError: 시퀀스가 ​​있는 배열 요소 설정

마이코드 |

Python에서 주로 numpy로 작업하고 다차원 배열을 만드는 경우 valueerror: 배열 요소를 시퀀스로 설정하는 문제가 발생했을 것입니다.

valueerror란 무엇입니까: 배열 요소를 시퀀스로 설정합니까?



ValueError는 함수가 올바른 유형의 인수를 받았지만 유형 값이 유효하지 않을 때 발생합니다. 이 경우 Numpy 배열이 시퀀스에 없으면 값 오류가 발생합니다.

예제를 보면 numpy 배열은 2차원이지만 나중에는 1차원 배열과도 혼합되어 있으므로 Python은 이것을 배열의 구조가 다양함을 의미하는 비균질 모양으로 감지하고, 따라서 Python은 값 오류를 발생시킵니다.

#Numpy array of different dimensions

import numpy as np
print(np.array([[[1, 2], [3, 4], [5, 6]], [[1],[2]]], dtype=int))

# Output
Traceback (most recent call last):
  File "c:\Projects\Tryouts\listindexerror.py", line 2, in <module>
    print(np.array([[[1, 2], [3, 4], [5, 6]], [[1],[2]]], dtype=int))
ValueError: setting an array element with a sequence. The requested array has an
inhomogeneous shape after 1 dimensions. The detected shape
 was (2,) + inhomogeneous part.



솔루션 – 동일한 차원의 배열을 만들고 각 배열에 동일한 배열 요소를 가짐으로써 아래와 같이 문제를 해결할 수 있습니다.

#Numpy array of same dimensions

import numpy as np
print(np.array([[[1, 2], [3, 4], [5, 6]]], dtype=int))

# Output
[[[1 2]
  [3 4]
  [5 6]]]


값 오류가 발생하는 또 다른 가능성은 다른 유형의 요소가 있는 배열을 만들려고 할 때입니다. 예를 들어, float와 string이 혼합된 배열이 있는 아래 예제를 생각해 보십시오. 이 경우 valueerror: cannot convert string to float가 다시 발생합니다.

# Mutliple data type and dtype as float 

import numpy as np
print(np.array([55.55, 12.5, "Hello World"], dtype=float))

# Output
Traceback (most recent call last):
  File "c:\Projects\Tryouts\listindexerror.py", line 2, in <module>
    print(np.array([55.55, 12.5, "Hello World"], dtype=float))
ValueError: could not convert string to float: 'Hello World'


솔루션 – 이 솔루션은 배열 내부에 부동 숫자만 선언해야 하거나 둘 다 원하는 경우 간단합니다. 그런 다음 아래와 같이 dtype을 float 대신 객체로 변경해야 합니다.

# Changing the dtype as object and having multiple data type

import numpy as np
print(np.array([55.55, 12.5, "Hello World"], dtype=object))

# Output
[55.55 12.5 'Hello World']


numpy 배열로 작업하는 동안 더 많은 사용 사례와 모범 사례를 보려면 아래 예를 확인하십시오.

import numpy

numpy.array([1,2,3]) #good

numpy.array([1, (2,3)]) #Fail, can't convert a tuple into a numpy 
                                   #array element

numpy.mean([5,(6+7)]) #good

numpy.mean([5,tuple(range(2))]) #Fail, can't convert a tuple into a numpy 
                                   #array element

def foo():
    return 3
numpy.array([2, foo()]) #good

def foo():
    return [3,4]
numpy.array([2, foo()]) #Fail, can't convert a list into a numpy 
                                   #array element


게시물Python ValueError: setting an array element with a sequenceItsMyCode에 처음 등장했습니다.

좋은 웹페이지 즐겨찾기