【问题标题】:error message when populating cell in 2d numpy array在二维 numpy 数组中填充单元格时出现错误消息
【发布时间】:2011-04-23 14:39:51
【问题描述】:

我正在尝试使用以下代码将一些 csv 文件中的数据填充到一个 numpy 数组中:

PreExArray=zeros([len(TestIDs),numColumns],float)

for row in reader:
    if row[1] =='PreEx10SecondsBEFORE':
        PreExArray[(j-1),0]=[row[2]]

但是,上面的最后一行代码会抛出以下错误:

ValueError: setting an array element with a sequence.

于是我将row[2]的内容打印出来如下:

print 'row[2] is:  ',row[2]

这产生了:

行[2] 为:0.780083333333

因此 row[2] 的内容不是错误消息所指示的序列。相反,内容是一个数字。

因此,我习惯使用以下代码将 row[2] 的内容放入一个变量中,然后用该变量的内容填充 PreExArray[(j-1),0],然后打印出该变量的内容变量:

jones = row[2]
PreExArray[(j-1),0]=jones
print 'PreExArray[(j-1),0] is:  ',PreExArray[(j-1),0]

结果是:

PreExArray[(j-1),0] 为:0.780083333333

因此,将 row[2] 放入变量中即可解决问题。但是,如果我每次都必须将其放入变量中,这确实是草率的代码。

谁能告诉我如何修复代码,以便在我输入更简单的内容时不会引发错误,例如 PreExArray[(j-1),0]=[row[2]] ?

================================================ =============================================

好的。我重新编写了代码,现在它抛出了一个新错误。新代码如下:

PreExArray=zeros([len(TestIDs),numColumns],float) 

for row in reader: 
    if row[1] =='PreEx10SecondsBEFORE': 
        PreExArray[(j-1),0]=row[1]
        PreExArray[(j-1),1]=row[2]

这个修改后的代码现在抛出以下错误消息:

PreExArray[(j-1),0]=row[1]
ValueError: setting an array element with a sequence.

但是,当我如下注释掉 PreExArray[(j-1),0]=row[1] (#PreExArray[(j-1),0]=row[1]) 时,后续行运行时没有抛出错误。

谁能告诉我如何编辑它以使其不会继续抛出此错误?

【问题讨论】:

  • row[1] 根据您的比较,是一个字符串“PreEx10SecondsBEFORE”。您不能将字符串存储在 numpy 浮点数组中。你想让你的数组最后是什么样子的?
  • 我将取每一行的平均值,用每一行的平均值创建一个新的数组/列表。针对五种不同的测试条件重复此练习。然后我将创建一个汇总矩阵,其列是变量,其行是测试条件,每个行/列单元格中的均值。

标签: python arrays numpy 2d


【解决方案1】:

看起来您的行变量来自电子表格,第一个索引值是行标签(字符串)。正如已经指出的那样,您不能将此数据存储在数据类型为“float”的 numpy 数组中。

您收到的错误消息是因为对于 numpy,字符串看起来像一个序列(可能是因为它支持 len 属性。)

如果您想保存行标签以重建电子表格可导入文件,使用您计算的新值,您必须将它们存储在单独的列表中。

【讨论】:

    【解决方案2】:

    你应该有:

    PreExArray[(j-1),0]=row[2]
    

    也就是说,右侧不应放入长度为 1 的列表中。

    【讨论】:

      猜你喜欢
      • 2013-11-26
      • 2018-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-24
      • 2017-09-16
      • 1970-01-01
      • 2017-08-12
      相关资源
      最近更新 更多