Index Error: too many indices for array While defining variable

Index Error: too many indices for array While defining variable

我收到了这条消息:

---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-23-60bbe78150c2> in <module>()
      17 men_only_stats=data[0::4]!="male"
      18 
 ---> 19 women_onboard = data[women_only_stats,1].astype(np.float)
      20 men_onboard = data[men_only_stats,1].astype(np.float)
      21 proportion_women_survive= sum(women_onboard)/size(women_onboard)

 IndexError: too many indices for array

当我在这里输入我的代码时:

import csv as csv
import numpy as np

csv_file_object = csv.reader(open(r"C:\Users\IT'S OVER 9000\Downloads\train.csv", 'rb'))
header = csv_file_object.next() 
data=[]

for row in csv_file_object:
    data.append(row)
data=np.array(data)

number_passengers= np.size(data[0::4,1].astype(np.float))
passengers_survived=np.sum(data[0::4,1].astype(np.float))
proportion_survived=passengers_survived/number_passengers

women_only_stats= data[0::4]=="female"
men_only_stats=data[0::4]!="male"

women_onboard = data[women_only_stats,1].astype(np.float)     
men_onboard = data[men_only_stats,1].astype(np.float)
proportion_women_survive= sum(women_onboard)/size(women_onboard)
proportion_men_survive= sum(men_onboard)/size(men_onboard)
print proportion_women_survive
print proportion_men_survive

这是我的 cvs 文件中的两行数据:

PassengerId,Survived,Pclass,Name,Sex,Age,SibSp,Parch,Ticket,Fare,Cabin,Embarked,‌​,,, 
1,0,3,"Braund, Mr. Owen Harris",male,22,1,0,A/5,21171,7.25,,S,,,     
2,1,1,"Cumings, Mrs. John Bradley (Florence Briggs Thayer)",female,38,1,0,PC,17599,71.2833,C85,C,,,

我做错了什么,是什么原因造成的,我该如何解决?

最有可能的是,当您使用 bool 数组(用于索引)时出现的问题 -

women_only_stats= data[0::4]=="female"

我相信 data 是一个二维数组,因此 data[0::4] 从数组中取出每 4 行(而不是第 4 列),然后您尝试将其与字符串值进行比较,因此你会得到一个 True/False 值的二维数组。这导致了问题。

实际上你想做的是 -

women_only_stats = data[:,4]=="female"

men_only_stats 相同,您还应该重新考虑使用 [0::4] 的所有地方,这意味着该维度的每第 4 个元素。

此外,最后我想建议对于这种 csv/data 操作,使用 pandas 库比使用 numpy 容易得多。

错误 IndexError: too many indices for array 当您尝试像访问 2d 数组一样访问 1d 数组,或像访问 3d 数组一样访问 2d 数组等时发生

在这种情况下,您正在访问 data,一个一维数组。抛出错误的行:

women_onboard = data[women_only_stats,1].astype(np.float)

...正在使用语法 array_var[x,y],它只能用于 2d+ 数组。该语法意味着您正在访问行 x 和列 y 处的元素,因此它不适用于只有一行(或者只有一列,如果您这样想的话)的数组.

如果您搜索该错误消息,您会得到很多询问类似问题的人的结果,例如 , here, and here