在OSX上使用PyDev和Python 2.7的eclipse环境。尝试计算数组中的元素并总结数组中的元素。获取索引错误。
import numpy as np
import os
import sys
csv_file_object = fileName = os.path.join('train.csv')
print('Directory separator on your platform ({}): {}'.format(sys.platform, os.sep))
data=[]
for row in csv_file_object:
data.append(row)
data = np.array(data)
number_passengers = np.size(data[0::,0].astype(np.float))
number_survived = np.sum(data[0::,0].astype(np.float))
proportion_survivors = number_survived / number_passengers
Traceback (most recent call last):
File "/Users/scdavis6/Documents/Kaggle/Titanic1.py", line 14, in <module>
number_passengers = np.size(data[0::,0].astype(np.float))
IndexError: too many indices
如果我能提供更多信息,请告诉我。
谢谢。
更新 我做了the edits,但是有关模块不可调用的另一个错误:
Traceback (most recent call last):
File "/Users/scdavis6/Documents/Kaggle/Titanic1.py", line 5, in <module>
csv_file_object = fileName = os.path('train.csv')
TypeError: 'module' object is not callable
更新 我将os.path('train.csv')更改为os.path.join('train.csv'),但是在找不到.csv文件时又出现了另一个错误。
Traceback (most recent call last):
File "/Users/scdavis6/Documents/Kaggle/Titanic1.py", line 9, in <module>
with open(fileName) as f:
IOError: [Errno 2] No such file or directory: 'train.csv'
这是.csv文件和python脚本的绝对路径。
import os
os.path.abspath("/Users/scdavis6/Desktop/train.csv")
'/用户/ scdavis6 /桌面/ train.csv'
import os
os.path.abspath("/Users/scdavis6/Documents/Kaggle/Titanic1.py")
'/用户/ scdavis6 /文档/ Kaggle / Titanic1.py'
答案 0 :(得分:1)
假设这是您的实际代码,问题是您永远不会打开该文件。您的csv_file_object
仍然只是fileName
,因此您的data
由该文件名的字符组成,从而产生一维numpy数组。
相反,您应该open
该文件并为其创建csv.reader
。
import csv
with open(fileName) as f:
reader = csv.reader(f)
data=[]
for row in reader:
data.append(row)
data = np.array(data)
或更短:data = np.array([row for row in csv.reader(f)])
更新:您遇到的新错误可能是由于您意外更改造成的
os.path.join('train.csv')
到os.path('train.csv')
,即不是从join
模块调用os.path
函数,而是(尝试)调用模块本身。
更新:您的train.csv
文件似乎与Python脚本不在同一目录中,因此如果您只使用文件名,脚本将无法找到该文件。您必须将绝对路径与文件名一起使用:
fileName = os.path.join('/Users/scdavis6/Desktop', 'train.csv')
或只是fileName = '/Users/scdavis6/Desktop/train.csv'
。或者,将您的train.csv
文件移动到与Python脚本相同的目录中。除非您在不同目录中的多个脚本中使用此文件,否则这可能确实是更好,更健壮的选项。