Kode Python ini:
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()
Lemparkan 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 kepada saya apa yang harus dilakukan untuk memperbaiki masalah pada kode yang rusak di atas sehingga berhenti membuang pesan kesalahan?
EDIT: Saya melakukan perintah cetak untuk mendapatkan isi dari matriks, dan inilah yang 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]]
Sepertinya 5 baris dengan 13 kolom matriks bagi saya, meskipun jumlah baris adalah variabel ketika data berbeda dijalankan melalui skrip. Dengan data yang sama yang saya tambahkan ini.
EDIT 2 : Namun, skrip tersebut membuat kesalahan. Jadi saya tidak berpikir bahwa ide Anda menjelaskan masalah yang terjadi di sini. Terima kasih. Ada ide lain?
EDIT 3:
FYI, jika saya mengganti baris kode masalah ini:
RRDuringArray = p.array(UnFilteredDuringExSummaryOfMeansArray,dtype=p.float64)[1:,3]
dengan ini sebagai gantinya:
RRDuringArray = p.array(UnFilteredDuringExSummaryOfMeansArray)[1:,3]
Kemudian bagian skrip itu berfungsi dengan baik tanpa menimbulkan kesalahan, tetapi kemudian baris kode ini semakin jauh ke bawah:
p.ylim(.5*RRDuringArray.min(),1.5*RRDuringArray.max())
Lemparkan 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 menentukan tipe data agar dapat menggunakan ylim di matplotlib, tetapi belum menentukan tipe data melemparkan pesan kesalahan yang memprakarsai posting ini.
Jawaban:
Dari kode yang Anda perlihatkan kepada kami, satu-satunya hal yang dapat kami katakan adalah bahwa Anda mencoba membuat array dari daftar yang tidak berbentuk seperti array multi-dimensi. Sebagai contoh
atau
akan menghasilkan pesan kesalahan ini, karena bentuk daftar input bukan "kotak" (umum) yang dapat diubah menjadi array multidimensi. Jadi mungkin
UnFilteredDuringExSummaryOfMeansArray
mengandung urutan panjang yang berbeda.Sunting : Penyebab lain yang mungkin untuk pesan kesalahan ini adalah mencoba menggunakan string sebagai elemen dalam array tipe
float
:Itulah yang Anda coba sesuai dengan hasil edit Anda. Jika Anda benar-benar ingin memiliki array NumPy yang berisi string dan float, Anda bisa menggunakan dtype
object
, yang memungkinkan array untuk menyimpan objek Python sewenang-wenang:Tanpa mengetahui apa yang akan dicapai kode Anda, saya tidak dapat menilai apakah ini yang Anda inginkan.
sumber
__getitem__
sebagaimana ditentukan di sini: github.com/numpy/numpy/issues/5100The Python ValueError:
Berarti persis seperti yang dikatakannya, Anda mencoba menjejalkan urutan angka ke dalam slot nomor tunggal. Itu bisa dilemparkan dalam berbagai keadaan.
1. Ketika Anda melewatkan tuple atau daftar python untuk ditafsirkan sebagai elemen array numpy:
2. Dengan mencoba menjejalkan panjang array numpy> 1 ke elemen array numpy:
Array numpy sedang dibuat, dan numpy tidak tahu bagaimana menjejalkan tuple multivalued atau array ke dalam slot elemen tunggal. Itu mengharapkan apa pun yang Anda berikan untuk mengevaluasi ke satu angka, jika tidak, Numpy menjawab bahwa ia tidak tahu cara mengatur elemen array dengan urutan.
sumber
Dalam kasus saya, saya mendapatkan Kesalahan ini di Tensorflow, Alasannya adalah saya mencoba memberi makan array dengan panjang atau urutan yang berbeda:
contoh:
Dan jika array saya adalah:
Maka saya akan mendapatkan kesalahan:
tetapi jika saya melakukan padding maka:
Sekarang berhasil.
sumber
bagi mereka yang mengalami masalah dengan masalah serupa di Numpy, solusi yang sangat sederhana adalah:
mendefinisikan
dtype=object
saat mendefinisikan array untuk menetapkan nilai padanya. misalnya:sumber
Edit
bagian dari jawaban yang diterima.Dalam kasus saya, masalahnya adalah masalah lain. Saya mencoba mengubah daftar daftar int ke array. Masalahnya adalah ada satu daftar dengan panjang yang berbeda dari yang lain. Jika Anda ingin membuktikannya, Anda harus melakukan:
Dalam kasus saya, referensi panjangnya adalah 560.
sumber
Dalam kasus saya, masalahnya adalah scatterplot dari kerangka data X []:
sumber
Ketika bentuknya tidak teratur atau elemen memiliki tipe data yang berbeda,
dtype
argumen yang diteruskan ke np.array hanya bisaobject
.``
sumber