Ini kode 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()
Melempar pesan kesalahan ini:
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.
Adakah yang bisa menunjukkan padaku apa yang harus dilakukan untuk memperbaiki masalah di rusak kode di atas sehingga berhenti melemparkan pesan kesalahan?
EDIT: Saya melakukan perintah cetak untuk mendapatkan isi dari matriks, dan ini adalah apa itu dicetak:
UnFilteredDuringExSummaryOfMeansarray adalah:
[['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]]
Terlihat seperti 5 baris dengan kolom 13 matriks untuk saya, meskipun jumlah baris adalah variabel bila data yang berbeda yang dijalankan melalui script. Dengan data yang sama bahwa saya menambahkan dalam hal ini.
EDIT 2: Namun, script melemparkan kesalahan. Jadi saya tidak berpikir bahwa ide anda menjelaskan masalah yang terjadi di sini. Terima kasih, meskipun. Ide lain?
EDIT 3:
FYI, jika saya mengganti masalah ini baris kode:
RRDuringArray = p.array(UnFilteredDuringExSummaryOfMeansArray,dtype=p.float64)[1:,3]
dengan ini sebagai gantinya:
RRDuringArray = p.array(UnFilteredDuringExSummaryOfMeansArray)[1:,3]
Maka itu bagian dari script bekerja dengan baik tanpa melemparkan kesalahan, tapi kemudian baris kode selanjutnya:
p.ylim(.5*RRDuringArray.min(),1.5*RRDuringArray.max())
Melempar kesalahan ini:
File "mypath\mypythonscript.py", line 3631, in CreateSummaryGraphics
p.ylim(.5*RRDuringArray.min(),1.5*RRDuringArray.max())
TypeError: cannot perform reduce with flexible type
Jadi anda dapat melihat bahwa saya perlu untuk menentukan tipe data dalam rangka untuk dapat menggunakan ylim di matplotlib, tapi belum menentukan tipe data adalah melempar pesan kesalahan yang diprakarsai posting ini.
Dari kode yang anda menunjukkan kepada kita, satu-satunya hal yang dapat kita katakan adalah bahwa anda mencoba untuk membuat sebuah array dari daftar yang isn't berbentuk seperti multi-dimensi array. Misalnya
numpy.array([[1,2], [2, 3, 4]])
atau
numpy.array([[1,2], [2, [3, 4]]])
akan menghasilkan pesan galat ini, karena bentuk input daftar isn't (generalisasi) "kotak" yang dapat berubah menjadi array multidimensi. Jadi mungkin UnFilteredDuringExSummaryOfMeansarray
berisi urutan panjang yang berbeda.
Edit: kemungkinan penyebab Lain untuk pesan kesalahan ini mencoba untuk menggunakan string sebagai sebuah elemen dalam array dari tipe float
:
numpy.array([1.2, "abc"], dtype=float)
Itu adalah apa yang anda coba menurut anda edit. Jika anda benar-benar ingin memiliki NumPy array yang berisi string dan mengapung, anda bisa menggunakan dtype objek
, yang memungkinkan array untuk menampung sewenang-wenang Python benda:
numpy.array([1.2, "abc"], dtype=object)
Tanpa mengetahui apa kode anda akan mencapai, saya dapat't menilai jika ini adalah apa yang anda inginkan.
Python ValueError:
ValueError: setting an array element with a sequence.
Berarti persis apa yang dikatakan, anda're mencoba untuk menjejalkan urutan nomor ke satu nomor slot. Hal ini dapat dibuang dalam berbagai keadaan.
1. Ketika anda melewati python tupel atau daftar untuk diartikan sebagai numpy elemen array:
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. Dengan mencoba untuk menjejalkan numpy array panjang > 1 ke numpy elemen array:
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
Sebuah numpy hotel yang sedang dibuat, dan numpy doesn't tahu bagaimana untuk menjejalkan multivalued tupel atau array ke elemen tunggal slot. Ia mengharapkan apa pun yang anda berikan untuk mengevaluasi untuk nomor tunggal, jika itu doesn't, Numpy menjawab bahwa itu doesn't tahu bagaimana untuk mengatur elemen array dengan urutan.
Dalam kasus saya , saya punya Kesalahan ini di Tensorflow , Alasan itu saya mencoba untuk memberi makan array dengan panjang yang berbeda atau urutan :
contoh :
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)
Dan jika saya menginap adalah :
example_array = [[1,2,3],[1,2]]
Maka saya akan mendapatkan error :
ValueError: setting an array element with a sequence.
tapi jika aku melakukan padding maka :
example_array = [[1,2,3],[1,2,0]]
Sekarang ini's bekerja.
Dalam kasus saya, adalah masalah lain. Aku mencoba mengkonversi daftar daftar dari int ke array. Masalahnya adalah bahwa ada satu daftar dengan panjang yang berbeda dari yang lain. Jika anda ingin membuktikannya, anda harus melakukan:
print([i for i,x in enumerate(list) if len(x) != 560])
Dalam kasus saya, suhu udara turun menjadi referensi adalah 560.
bagi mereka yang mengalami kesulitan dengan masalah yang sama di Numpy, solusi yang sangat sederhana akan sama:
mendefinisikan dtype=objek
ketika mendefinisikan array untuk menetapkan nilai-nilai itu. misalnya:
out = np.empty_like(lil_img, dtype=object)
Dalam kasus saya, masalahnya adalah dengan sebar dari dataframe 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)