【发布时间】: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 浮点数组中。你想让你的数组最后是什么样子的?
-
我将取每一行的平均值,用每一行的平均值创建一个新的数组/列表。针对五种不同的测试条件重复此练习。然后我将创建一个汇总矩阵,其列是变量,其行是测试条件,每个行/列单元格中的均值。