0

OSX 上の Python 2.7 の Eclipse 環境で PyDev を使用する。配列内の要素を数え、配列内の要素を合計しようとしています。インデックスでエラーを取得しています。

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

追加情報を提供できるかどうかお知らせください。

ありがとうございました。


更新:編集 を行いましたが、モジュールが呼び出し可能でないという別のエラーが発生しました:

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")

「/Users/scdavis6/Desktop/train.csv」

import os
os.path.abspath("/Users/scdavis6/Documents/Kaggle/Titanic1.py")

「/Users/scdavis6/Documents/Kaggle/Titanic1.py」

4

1 に答える 1

1

これが実際のコードであると仮定すると、問題はファイルを開かないことです。あなたcsv_file_objectfileNameまだdata.

代わりに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')を呼び出す代わりに、モジュール自体を (しようとして) 呼び出しています。joinos.path


更新:ファイルが Python スクリプトと同じディレクトリにないようtrain.csvです。そのため、ファイル名だけを使用すると、スクリプトはファイルを見つけられません。ファイル名とともに絶対パスを使用する必要があります。

fileName = os.path.join('/Users/scdavis6/Desktop', 'train.csv')

または単にfileName = '/Users/scdavis6/Desktop/train.csv'train.csvまたは、ファイルを Python スクリプトと同じディレクトリに移動します。異なるディレクトリの複数のスクリプトでこのファイルを使用していない限り、これは実際にはより適切で堅牢なオプションである可能性があります。

于 2014-01-17T09:21:58.630 に答える