当前位置: 首页 > 面试题库 >

Python-ValueError:设置具有序列的数组元素

墨寂弦
2023-03-14
问题内容

此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

因此,您可以看到我需要指定数据类型以便能够在matplotlib中使用ylim,但是指定数据类型却引发了引发此帖子的错误消息。


问题答案:

从你展示给我们的代码中,我们唯一可以看出的就是你正在尝试从形状不像多维数组的列表中创建数组。例如

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

要么

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

将产生此错误消息,因为输入列表的形状不是可以转换为多维数组的(通用)“框”。因此可能UnFilteredDuringExSummaryOfMeansArray包含不同长度的序列。

编辑:此错误消息的另一个可能原因是尝试使用字符串作为类型数组中的元素float:

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

这就是你根据编辑尝试的内容。如果你确实想拥有一个同时包含字符串和浮点数的NumPy数组,则可以使用dtype object,它使该数组可以容纳任意Python对象:

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

不知道你的代码将完成什么,我无法判断这是否是你想要的。



 类似资料:
  • 我正在尝试调用以前部署在Amazon SageMaker上的Endpoint。这是我的密码: 下面是我得到的错误: ModelErrorTraceback(最近一次调用最后一次)在()1 response=client中。调用endpoint(endpoint名称=endpoint名称,2 ContentType='text/csv'---- /home/ec2-user/anaconda3/en

  • 问题内容: 我只是在代码中发现了一个逻辑错误,该错误导致了各种各样的问题。我在无意中执行了按位AND运算,而不是逻辑AND 运算。 我将代码从: 至: 令我惊讶的是,我得到了一个相当神秘的错误消息: :具有多个元素的数组的真值不明确。使用或 为什么在使用按位运算时没有发出类似的错误?如何解决此错误? 问题答案: r是一个数组。(boolean)数组也是如此。对于numpy数组,该&操作返回两个布尔

  • 问题内容: 我需要提取给定窗口的时间序列/数组的所有子序列。例如: 迭代序列的简单方法当然很昂贵,例如: 我发现了一种更好的方法,即复制序列,将其移动一个不同的值直到覆盖窗口,然后使用分割不同的序列。性能大约提高了100倍,因为for循环遍历窗口大小而不是序列大小: 我已经看到pandas在pandas.stats.moment模块中包含多个滚动功能,我想它们的作用在某种程度上类似于子序列问题。该

  • 我将如何链接两个数组,使每个变量与它自己的指数相关?我不想让这个变量和它的指数在不同数组的同一个索引中。我想知道如何有一个更有保证的方式,数据将得到妥善处理。

  • 在我的身体里我有3

  • 假设我有一个元组列表,如下所示: 我想在此列表中添加另一个元组。我该怎么做? 更具体地说,我想将此元组添加为列表中的第一个元组,以便我得到: 我使用的是Python 2.7。 提前感谢!