programing

ValueError: 배열 요소를 시퀀스로 설정합니다.

sourcejob 2022. 11. 3. 21:52
반응형

ValueError: 배열 요소를 시퀀스로 설정합니다.

다음 코드 샘플이 사용되는 이유는 무엇입니까?

np.array([[1, 2], [2, 3, 4]])
np.array([1.2, "abc"], dtype=float)

...모두 다음의 에러를 나타내고 있습니다.

ValueError: 배열 요소를 시퀀스로 설정합니다.

생각할 수 있는 이유 1: 들쭉날쭉한 어레이를 작성하려고 합니다.

다차원 배열과 같지 않은 목록에서 배열을 만들 수 있습니다.

numpy.array([[1, 2], [2, 3, 4]])         # wrong!
numpy.array([[1, 2], [2, [3, 4]]])       # wrong!

다음 예에서는 다음과 같은 인수를 사용합니다.numpy.array에 길이가 다른 시퀀스를 나타냅니다.입력 목록이 다차원 배열로 변환될 수 있는 "상자" 모양과 같지 않기 때문에 이러한 오류 메시지가 나타납니다.

생각할 수 있는 이유 2: 호환되지 않는 유형의 요소를 제공합니다.

예를 들어 유형 배열의 요소로 문자열 제공float:

numpy.array([1.2, "abc"], dtype=float)   # wrong!

문자열과 플로트를 모두 포함하는 NumPy 배열이 필요한 경우 dtype을 사용할 수 있습니다.object이를 통해 어레이는 임의의 Python 개체를 유지할 수 있습니다.

numpy.array([1.2, "abc"], dtype=object)

Python ValueError:

ValueError: setting an array element with a sequence.

정확히 그 말인 즉슨, 당신은 일련의 숫자들을 하나의 숫자 슬롯에 쑤셔 넣으려 하고 있다.다양한 상황에서 던질 수 있습니다.

1. python tuple 또는 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

2. numpy 배열의 길이> 1을 numpy 배열 요소에 주입합니다.

x = np.array([1,2,3])
x[0] = np.array([4])         #good



x = np.array([1,2,3])
x[0] = np.array([4,5])       #Fail, can't convert the numpy array to fit 
                             #into a numpy array element

numpy 어레이가 생성되고 있지만 numpy는 다중값의 튜플 또는 어레이를 단일 요소 슬롯에 주입하는 방법을 알지 못합니다.Numpy는 사용자가 제공한 정보가 모두 단일 번호로 평가되기를 기대합니다. 그렇지 않으면 배열 요소를 시퀀스로 설정하는 방법을 모른다고 응답합니다.

내 경우 Tensorflow에서 이 에러가 발생하였습니다.이유는 길이 또는 시퀀스가 다른 배열을 공급하려고 했기 때문입니다.

예:

import tensorflow as tf

input_x = tf.placeholder(tf.int32,[None,None])



word_embedding = tf.get_variable('embeddin',shape=[len(vocab_),110],dtype=tf.float32,initializer=tf.random_uniform_initializer(-0.01,0.01))

embedding_look=tf.nn.embedding_lookup(word_embedding,input_x)

with tf.Session() as tt:
    tt.run(tf.global_variables_initializer())

    a,b=tt.run([word_embedding,embedding_look],feed_dict={input_x:example_array})
    print(b)

어레이가 다음과 같은 경우:

example_array = [[1,2,3],[1,2]]

그러면 에러가 발생합니다.

ValueError: setting an array element with a sequence.

근데 패딩을 하면

example_array = [[1,2,3],[1,2,0]]

이제 됐다.

Numpy에서 유사한 문제로 어려움을 겪고 있는 사람들에게 매우 간단한 해결책은 다음과 같습니다.

정의dtype=object값을 할당하기 위한 배열을 정의할 때 다음과 같이 입력합니다.

out = np.empty_like(lil_img, dtype=object)

제 경우엔 다른 문제였어요.int 목록을 배열로 변환하려고 했습니다.다른 것과 다른 길이의 리스트가 하나 있다는 것이 문제였다.증명하려면 다음 작업을 수행해야 합니다.

print([i for i,x in enumerate(list) if len(x) != 560])

제 경우, 길이 참조는 560이었습니다.

제 경우, 문제는 데이터 프레임 X의 산점도에 있었습니다.[ ]

ax.scatter(X[:,0],X[:,1],c=colors,    
       cmap=CMAP, edgecolor='k', s=40)  #c=y[:,0],

#ValueError: setting an array element with a sequence.
#Fix with .toarray():
colors = 'br'
y = label_binarize(y, classes=['Irrelevant','Relevant'])
ax.scatter(X[:,0].toarray(),X[:,1].toarray(),c=colors,   
       cmap=CMAP, edgecolor='k', s=40)

이지 않거나 데이터 을 가질 , 는 규칙적이지 않습니다.dtype에는 np.array만 할 수 .object.

import numpy as np

# arr1 = np.array([[10, 20.], [30], [40]], dtype=np.float32)  # error
arr2 = np.array([[10, 20.], [30], [40]])  # OK, and the dtype is object
arr3 = np.array([[10, 20.], 'hello'])     # OK, and the dtype is also object

``

제 경우 입력으로 사용하고 싶은 시리즈로 네스트 리스트가 있었습니다.

첫 번째 확인:한다면

df['nestedList'][0]

를 출력하다[1,2,3]네스트 리스트가 있습니다.

다음 입력으로 할 때 합니다.df['nestedList'][0].

다음 단계는 아마도 모든 중첩 목록을 하나의 중첩되지 않은 목록으로 연결하는 것입니다.

[item for sublist in df['nestedList'] for item in sublist]

네스트 리스트의 평탄화는 리스트에서 플랫 리스트를 만드는 방법에서 차용한 것입니다.

언급URL : https://stackoverflow.com/questions/4674473/valueerror-setting-an-array-element-with-a-sequence

반응형