Этот код 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()
Выдает это сообщение об ошибке:
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.
Может кто-нибудь показать мне, что нужно сделать, чтобы исправить проблему в сломанном коде выше, чтобы он перестал выдавать сообщение об ошибке?
РЕДАКТИРОВАТЬ: я сделал команду печати, чтобы получить содержимое матрицы, и это то, что он распечатал:
UnFilteredDuringExSummaryOfMeansArray - это:
[['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]]
Для меня это выглядит как матрица 5 на 13 столбцов, хотя количество строк варьируется, когда в скрипте запускаются разные данные. С этими же данными, которые я добавляю в это.
РЕДАКТИРОВАТЬ 2 : Тем не менее, скрипт выдает ошибку. Поэтому я не думаю, что ваша идея объясняет проблему, которая здесь происходит. Однако, спасибо. Есть другие идеи?
РЕДАКТИРОВАТЬ 3:
К вашему сведению, если я заменю эту проблемную строку кода:
RRDuringArray = p.array(UnFilteredDuringExSummaryOfMeansArray,dtype=p.float64)[1:,3]
с этим вместо этого:
RRDuringArray = p.array(UnFilteredDuringExSummaryOfMeansArray)[1:,3]
Тогда этот раздел скрипта работает нормально, не выдавая ошибки, но затем эта строка кода далее вниз по строке:
p.ylim(.5*RRDuringArray.min(),1.5*RRDuringArray.max())
Выдает эту ошибку:
File "mypath\mypythonscript.py", line 3631, in CreateSummaryGraphics
p.ylim(.5*RRDuringArray.min(),1.5*RRDuringArray.max())
TypeError: cannot perform reduce with flexible type
Таким образом, вы можете видеть, что мне нужно указать тип данных, чтобы иметь возможность использовать ylim в matplotlib, но при указании типа данных выдается сообщение об ошибке, инициировавшее этот пост.
Ответы:
Из кода, который вы нам показали, единственное, что мы можем сказать, это то, что вы пытаетесь создать массив из списка, который не имеет форму многомерного массива. Например
или
выдаст это сообщение об ошибке, потому что форма списка ввода не является (обобщенным) «блоком», который можно превратить в многомерный массив. Так что, вероятно,
UnFilteredDuringExSummaryOfMeansArray
содержит последовательности разной длины.Изменить : Другая возможная причина для этого сообщения об ошибке пытается использовать строку в качестве элемента в массиве типа
float
:Это то, что вы пытаетесь в соответствии с вашими правками. Если вы действительно хотите иметь массив NumPy, содержащий как строки, так и числа с плавающей запятой, вы можете использовать dtype
object
, который позволяет массиву содержать произвольные объекты Python:Не зная, что ваш код будет выполнять, я не могу судить, если это то, что вы хотите.
источник
__getitem__
как указано здесь: github.com/numpy/numpy/issues/5100Ошибка Python ValueError:
В точности означает, что вы пытаетесь втиснуть последовательность чисел в один номер. Это может быть брошено при различных обстоятельствах.
1. Когда вы передаете кортеж или список Python для интерпретации как элемент массива numpy:
2. Пытаясь втиснуть массив массива> 1 в элемент массива массива:
Создается массив numpy, и numpy не знает, как втиснуть многозначные кортежи или массивы в одноэлементные слоты. Он ожидает, что все, что вы дадите ему, будет оцениваться как одно число, если нет, Numpy отвечает, что не знает, как установить элемент массива с последовательностью.
источник
В моем случае я получил эту ошибку в Tensorflow, причина была в том, что я пытался передать массив с другой длиной или последовательностями:
пример :
И если мой массив:
Тогда я получу ошибку:
но если я сделаю дополнение, то:
Теперь это работает.
источник
для тех, кто испытывает проблемы с подобными проблемами в Numpy, очень простое решение будет:
определение
dtype=object
при определении массива для присвоения ему значений. например:источник
Edit
принятого ответа?В моем случае проблема была в другом. Я пытался преобразовать списки списков Int в массив. Проблема заключалась в том, что был один список, длина которого отличалась от других. Если вы хотите доказать это, вы должны сделать:
В моем случае эталон длины был 560.
источник
В моем случае проблема была в диаграмме рассеяния кадра данных X []:
источник
Если форма не является регулярной или элементы имеют разные типы данных,
dtype
аргумент, переданный только в np.array, может бытьobject
.``
источник