【发布时间】:2015-12-26 08:52:25
【问题描述】:
我收到了这条消息:
---------------------------------------------------------------------------
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,,,
我做错了什么,是什么原因造成的,我该如何解决?
【问题讨论】:
-
不应该
men_only_stats使用=="male"吗? -
在我拥有的数据集中,只有“男”和“女”两类。如果我输入 != "female" 那么 python 将获取性别索引不是女性的数据。但是将其切换为男性可以完成同样的事情。
-
看起来你的两个变量都包含女性。
!= "male"和== "female"是一回事,不是吗? -
哎呀。感谢您的帮助!嗯,刚刚尝试切换变量并设置 men_only_stats= data[0::4] =="male" 但我仍然收到 indeces 错误。
-
women_only_stats,1中的1应该是什么?只获取第一列?
标签: python numpy indexing ipython-notebook