with una tuplas serie sacar palabra numeros lista generar elementos elemento como colecciones caracteres buscar arreglo array python arrays numpy slice

python - tuplas - ValueError: configuración de un elemento de matriz con una secuencia



sacar elementos de una lista python (4)

Este código de Python:

import numpy as p def firstfunction(): UnFilteredDuringExSummaryOfMeansArray = [] MeanOutputHeader=[''TestID'',''ConditionName'',''FilterType'',''RRMean'',''HRMean'',''dZdtMaxVoltageMean'',''BZMean'',''ZXMean'' ,''LVETMean'',''Z0Mean'',''StrokeVolumeMean'',''CardiacOutputMean'',''VelocityIndexMean''] dataMatrix = BeatByBeatMatrixOfMatrices[column] roughTrimmedMatrix = p.array(dataMatrix[1:,1:17]) trimmedMatrix = p.array(roughTrimmedMatrix,dtype=p.float64) #ERROR THROWN HERE myMeans = p.mean(trimmedMatrix,axis=0,dtype=p.float64) conditionMeansArray = [TestID,testCondition,''UnfilteredBefore'',myMeans[3], myMeans[4], myMeans[6], myMeans[9] , myMeans[10], myMeans[11], myMeans[12], myMeans[13], myMeans[14], myMeans[15]] UnFilteredDuringExSummaryOfMeansArray.append(conditionMeansArray) secondfunction(UnFilteredDuringExSummaryOfMeansArray) return def secondfunction(UnFilteredDuringExSummaryOfMeansArray): RRDuringArray = p.array(UnFilteredDuringExSummaryOfMeansArray,dtype=p.float64)[1:,3] return firstfunction()

Lanza este mensaje de error:

File "mypath/mypythonscript.py", line 3484, in secondfunction RRDuringArray = p.array(UnFilteredDuringExSummaryOfMeansArray,dtype=p.float64)[1:,3] ValueError: setting an array element with a sequence.

¿Alguien puede mostrarme qué hacer para solucionar el problema en el código roto anterior para que deje de emitir un mensaje de error?

EDITAR: Hice un comando de impresión para obtener el contenido de la matriz, y esto es lo que imprimió:

UnFilteredDuringExSummaryOfMeansArray es:

[[''TestID'', ''ConditionName'', ''FilterType'', ''RRMean'', ''HRMean'', ''dZdtMaxVoltageMean'', ''BZMean'', ''ZXMean'', ''LVETMean'', ''Z0Mean'', ''StrokeVolumeMean'', ''CardiacOutputMean'', ''VelocityIndexMean''], [u''HF101710'', ''PreEx10SecondsBEFORE'', ''UnfilteredBefore'', 0.90670000000000006, 66.257731979420001, 1.8305673000000002, 0.11750000000000001, 0.15120546389880002, 0.26870546389879996, 27.628261216480002, 86.944190346160013, 5.767261352345999, 0.066259118585869997], [u''HF101710'', ''25W10SecondsBEFORE'', ''UnfilteredBefore'', 0.68478571428571422, 87.727887206978565, 2.2965444125714285, 0.099642857142857144, 0.14952476549885715, 0.24916762264164286, 27.010483303721429, 103.5237336525, 9.0682762747642869, 0.085022572648242867], [u''HF101710'', ''50W10SecondsBEFORE'', ''UnfilteredBefore'', 0.54188235294117659, 110.74841107829413, 2.6719262705882354, 0.077705882352917643, 0.15051306356552943, 0.2282189459185294, 26.768787504858825, 111.22827075238826, 12.329456404418824, 0.099814258468417641], [u''HF101710'', ''75W10SecondsBEFORE'', ''UnfilteredBefore'', 0.4561904761904762, 131.52996981880955, 3.1818159523809522, 0.074714285714290493, 0.13459344175047619, 0.20930772746485715, 26.391156337028569, 123.27387909873812, 16.214243779323812, 0.1205685359981619]]

Parece una matriz de columna de 5 filas por 13, aunque el número de filas es variable cuando se ejecutan datos diferentes a través del script. Con esta misma información que estoy agregando en esto.

EDIT 2 : Sin embargo, el script está arrojando un error. Entonces, no creo que su idea explique el problema que está sucediendo aquí. Gracias de cualquier forma. ¿Alguna otra idea?

EDIT 3:

FYI, si reemplazo esta línea de código de problema:

RRDuringArray = p.array(UnFilteredDuringExSummaryOfMeansArray,dtype=p.float64)[1:,3]

con esto en su lugar:

RRDuringArray = p.array(UnFilteredDuringExSummaryOfMeansArray)[1:,3]

Entonces, esa sección de la secuencia de comandos funciona bien sin lanzar un error, pero luego esta línea de código más abajo en la línea:

p.ylim(.5*RRDuringArray.min(),1.5*RRDuringArray.max())

Lanza este error:

File "mypath/mypythonscript.py", line 3631, in CreateSummaryGraphics p.ylim(.5*RRDuringArray.min(),1.5*RRDuringArray.max()) TypeError: cannot perform reduce with flexible type

Así que pueden ver que necesito especificar el tipo de datos para poder usar ylim en matplotlib, pero especificar el tipo de datos arroja el mensaje de error que inició esta publicación.


En mi caso, el problema fue otro. Intentaba convertir listas de listas de int a array. El problema era que había una lista con una longitud diferente a otras. Si quieres probarlo, debes hacer:

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

En mi caso, la referencia de longitud fue 560.


En mi caso, recibí este error en Tensorflow, razón por la que estaba tratando de alimentar una matriz con diferentes longitudes o secuencias:

ejemplo:

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)

Y si mi matriz es:

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

Entonces obtendré el error:

ValueError: setting an array element with a sequence.

pero si hago relleno entonces:

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

Ahora funciona.


Según el código que nos mostró, lo único que podemos decir es que intenta crear una matriz a partir de una lista que no tiene forma de matriz multidimensional. Por ejemplo

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

o

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

producirá este mensaje de error, porque la forma de la lista de entrada no es una "caja" (generalizada) que se puede convertir en una matriz multidimensional. Probablemente UnFilteredDuringExSummaryOfMeansArray contenga secuencias de diferentes longitudes.

Editar : Otra posible causa de este mensaje de error es tratar de usar una cadena como un elemento en una matriz de tipo float :

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

Eso es lo que estás intentando según tu edición. Si realmente quieres tener una matriz NumPy que contenga tanto strings como floats, puedes usar el object dtype, que permite que la matriz contenga objetos arbitrarios de Python:

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

Sin saber lo que su código logrará, no puedo juzgar si esto es lo que quiere.


The Python ValueError:

ValueError: setting an array element with a sequence.

Significa exactamente lo que dice, estás tratando de meter una secuencia de números en una sola ranura numérica. Se puede lanzar bajo diversas circunstancias.

1. Cuando pasas una tupla o lista de Python para interpretarla como un elemento de matriz 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. Intentando meter una numpy array length> 1 en un numpy array element:

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

Se está creando una matriz numpy, y numpy no sabe cómo agrupar tuplas o matrices multivaloradas en ranuras de un solo elemento. Espera que lo que sea que le des evalúe a un solo número, si no lo hace, Numpy responde que no sabe cómo configurar un elemento de matriz con una secuencia.