Python 索引错误:定义变量时数组的索引太多

Python 索引错误:定义变量时数组的索引太多,python,numpy,indexing,ipython-notebook,Python,Numpy,Indexing,Ipython Notebook,我收到了这个消息: --------------------------------------------------------------------------- IndexError Traceback (most recent call last) <ipython-input-23-60bbe78150c2> in <module>() 17 men_only_stats=data[0

我收到了这个消息:

---------------------------------------------------------------------------
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
以下是我的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数组(用于索引)时-

我相信
data
是一个2D数组,因此
data[0::4]
从数组中每隔4行(而不是第4列)获取一个值,然后尝试将其与字符串值进行比较,从而返回一个包含真/假值的2D数组。这就产生了问题

实际上你想做的是-

women_only_stats = data[:,4]=="female"
同样适用于男性统计数据,您也应该重新考虑您使用过的所有地方,这意味着该维度的每四个元素


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

错误
索引器:当您尝试访问1d数组时,数组的索引太多了,好像它是2d,或者2d数组好像是3d,等等

在本例中,您正在访问
数据
,一个1d数组。引发错误的行:

women_onboard = data[women_only_stats,1].astype(np.float)
…正在使用语法
array\u var[x,y]
,该语法只能用于2d+数组。该语法意味着您正在访问行
x
和列
y
处的元素,因此它不适用于只有一行(或者只有一列,如果您这样认为的话)的数组


如果你搜索这个错误消息,你会得到很多人问类似问题的结果,例如,和。

不应该使用
==“男性”
?在我的数据集中,只有两类:“男性”和“女性”。如果我放“女性”之后,python将使用非女性的性别索引获取数据。但将其转换为男性完成了同样的事情,而且看起来两个变量都包含女性<代码>!=“男性”和“女性”是一样的,不是吗?哎呀。谢谢你的帮助!嗯,刚刚试着切换变量,让男性统计=数据[0::4]=“男性”,但我还是得到了索引错误。在
女性统计中,1
应该是什么?只获取第一列?
women_only_stats = data[:,4]=="female"
women_onboard = data[women_only_stats,1].astype(np.float)