我有一个python类,它读取CSV文件并将信息填充到类中的单独字段中。
class DataCSVReader(object):
def __init__(self):
self.data_name1 = []
self.data_name2 = []
....
self.data_nameN = []
def read_from_csv(self, filename):
data = np.genfromtxt(filename, delimiter=',', skip_header=1)
self.data_name1 = data[:, 1:4]
self.data_name2 = data[:, 4:8]
...
self.data_nameN = data[:, 4*(N-1):4*N]
该文件可以正常工作并读取数据。但是我的数据字段 N 的数量相当大,因此我的代码很长而没有太多进展。所以我的问题是:
答案 0 :(得分:1)
您可以使用simple list-comprehension创建列表列表,如下所示:
def read_from_csv(self, filename):
data = np.genfromtxt(filename, delimiter=',', skip_header=1)
# create a list of lists size of 4
self.chunked_data = [data[i:i + 4] for i in xrange(0, len(data), 4)]
之后你可以获得带索引的目标吸盘(注意它从0
开始),dr.data_name1
- > self.chunked_data[0]
答案 1 :(得分:1)
为了好玩,我提出了一个解决方案,该解决方案采用了嵌套列表的已接受答案的策略来包含数据,但添加了__getattr__
方法以允许使用简写{{{{}}轻松访问数据1}}其中self.data_x
是列索引。
x