2016-08-05 42 views
0

我有這樣的代碼讀取數字,其目的是使用numpy的NumPy的ValueError異常:設置一個數組元素,在列表中的順序讀取

import numpy as np 
import glob 
import os 

values = [] 
line_number = 6 

road = '/Users/allisondavis/Documents/HCl' 
for pbpfile in glob.glob(os.path.join(road, 'pbpfile*')): 
    lines = open(pbpfile, 'r').readlines() 
    while line_number < len(lines) : 
     variables = lines[line_number].split() 
     values.append(variables) 
     line_number = line_number + 3 

a = np.asarray(values).astype(np.float) 
std = np.std(a) 
rms = std * 100 
print rms 

不過,我不斷收到錯誤代碼來計算性病%RMS:

Traceback (most recent call last): 
File "rmscalc.py", line 17, in <module> 
a = np.asarray(values).astype(np.float) 
ValueError: setting an array element with a sequence. 

任何想法如何解決這個問題?我是python/numpy的新手。如果打印我的價值觀,它看起來是這樣的:

[[1,2,3,4],[2,4,5,6],[1,3,5,6]] 
+0

都能跟得上@bernie沒有工作 – alli

+0

看錶達的作品,看看究竟是什麼給問題。看(打印)'值'。嘗試'a = np.array(values)'。如果它能正常打印它。檢查它的'dtype'。 – hpaulj

+0

我可以打印值。當做一個= np.array(值) - 沒有新的事情發生。該dtype是numpy.ndarray – alli

回答

0

我能想到的修改你的代碼,可以潛在地解決你的問題:

初始化值作爲numpy的陣列,並使用numpy的追加或串聯:

values = np.array([], dtype=float) 

內。然後循環:

values = np.append(values, [variables], axis=0) 
# or 
variables = np.array(lines[line_number].split(), dtype=float) 
values = np.concatenate((values, variables), axis=0) 


另外,如果你的文件是的.csv(或任何其他類型Pandas can read):

import pandas as pd 
# Replace `read_csv` with your appropriate file reader 

a = pd.concat([pd.read_csv(pbpfile) 
       for pbpfile in glob.glob(os.path.join(road, 'pbpfile*'))]).values 
# or 
a = np.concatenate([pd.read_csv(pbpfile).values 
        for pbpfile in glob.glob(os.path.join(road, 'pbpfile*'))], axis=0) 
相關問題