2013-08-16 79 views
5

Tôi gặp sự cố có vẻ như câu trả lời sẽ được giải thích một cách dễ dàng. Tôi đang phải vật lộn để chuyển đổi các phần tử mảng của tôi để nổi (vì vậy mà tôi có thể nhân lên, thêm vào chúng vv)Không thể chuyển đổi mảng thành phao python

import csv 
import os 
import glob 
import numpy as np 

def get_data(filename): 
    with open(filename, 'r') as f: 
     reader = csv.reader(f)      
     return list(reader) 

all_data = [] 

path=raw_input('What is the directory?')  
for infile in glob.glob(os.path.join(path, '*.csv')): 
    all_data.extend(get_data(infile)) 
a = np.array(all_data) 
current_track_data=a[0:,[8,9,10,11,12]] 
abs_track_data=a[0:,7] 

và tôi nhận được lỗi:

> --------------------------------------------------------------------------- ValueError        Traceback (most recent call last) C:\Users\AClayton\AppData\Local\Enthought\Canopy\App\appdata\canopy-1.0.3.1262.win-x86_64\lib\site-packages\IPython\utils\py3compat.pyc in execfile(fname, glob, loc) 
    174    else: 
    175     filename = fname 
--> 176    exec compile(scripttext, filename, 'exec') in glob, loc 
    177  else: 
    178   def execfile(fname, *where): 
> 
> C:\Users\AClayton\Current\python begin\code_tester2.py in <module>() 
>  18 for infile in glob.glob(os.path.join(path, '*.csv')): # performs loop for each file in the specified path with extension .csv 
>  19  all_data.extend(get_data(infile)) 
> ---> 20  a = np.ndarray(all_data, dtype=float) 
>  21 
>  22  current_track_data=a[0:,[8,9,10,11,12]] 
> 
> ValueError: sequence too large; must be smaller than 32 
+1

Bạn có thể xem mã của mình không? Nó không phù hợp với những gì trong ngoại lệ. Tôi thấy một vài khác biệt, bao gồm một số thụt đầu dòng. – Brionius

+0

Bạn có thể hiển thị đầu ra của dòng 19 không? – Dschoni

Trả lời

11

Kịch bản của bạn là không giống nhau như mã bạn đã đăng ... Khi truy nguyên lỗi của bạn hiển thị, trong dòng 20 bạn đang gọi np.ndarray. Đó là số numpy array object, không phải là np.arrayfactory function. Trừ khi bạn biết rất rõ những gì bạn đang làm, hãy làm theo những lời khuyên tài liệu và:

Arrays should be constructed using array , zeros or empty (refer to the See Also section below). The parameters given here refer to a low-level method (ndarray(...)) for instantiating an array.

Vì vậy, thay đổi dòng của bạn # 20:

a = np.array(all_data, dtype=float) 

và bạn cần sử dụng tốt.

Lỗi bạn đang gặp phải do ndarray lấy đầu vào đầu tiên của bạn làm hình dạng của mảng được tạo. Có giới hạn bị bẻ khóa đối với số thứ nguyên được đặt là 32 trên hệ thống Windows của tôi (có thể phụ thuộc vào nền tảng, không chắc chắn). Danh sách all_data của bạn có hơn 32 mục nhập (hoặc bất kỳ giá trị nào trong hệ thống của bạn), được hiểu sai dưới dạng kích thước của thứ nguyên và đó là nguyên nhân gây ra lỗi.

+0

Xin lỗi về lỗi và sự chậm trễ trong thư trả lời. Cảm ơn sự giúp đỡ về vấn đề đó, tôi không thể kiểm tra các yếu tố cho ndarray. Ngoài ra tôi đã thay đổi nó thành mảng và nhận được lỗi: ValueError: thiết lập một phần tử mảng với một chuỗi. Tôi giả định Đó là vì tôi vẫn đang thiết lập nó bằng "all_data"? –

+0

Tôi nghĩ rằng tôi đã tìm thấy vấn đề: hàng cuối cùng của all_data chỉ có một nửa giá trị. Nếu tôi xóa hàng dưới cùng thì nó sẽ hoạt động ... –

Các vấn đề liên quan