首页 > 解决方案 > csv 文件到 2d 列表,然后拆分到 2d 列表列表

问题描述

我将 csv 文件读入二维列表:

aData = loadtxt(sPath, delimiter=',')

我可以直接分成两个二维列表:

X = aData[:,10:]    # neural net output
Y = aData[:,2:10]   # neural net input

但在此之前,我想传播aData到 6 个不同的二维列表

aDataW = [  [[]], [[]], [[]], [[]], [[]], [[]]  ]  # no idea if this is correct :-(

然后像

for i in range(len(aData)):
    iW = 4  # my logic..
    aDataW[iW].append(aData[i])

但是当我得到错误时

aDataN = aDataW[4]
X = aDataM[:,10:]
TypeError: list indices must be integers, not tuple

标签: pythonlistnumpycsvappend

解决方案


np.asarray() 我需要使用工作示例将列表列表转换回二维数组:

import numpy as np

hFile = open("test.csv", "w")
hFile.write('1,1,3,4\n1,0,1,2\n0,1,1,7')
hFile.close()

aData = np.loadtxt('test.csv', delimiter=',')
print '\naData:'
print aData

aaData = [  [], [], []  ]    # 'split' aData onto 3 2d-arrays
print '\naaData:'
print aaData

for i in range(len(aData)):
    aPred = aData[i,0:2]
    iW = int(aPred[0]+aPred[0])
    aaData[iW].append(aData[i])

for i in range(len(aaData)):
    aaData[i] = np.asarray(aaData[i])

print '\naaData[2]:'
print aaData[2]

X = aaData[2][:,2:]     # neural net input
Y = aaData[2][:,0:2]    # neural net output

print '\nX:'
print X

输出:

aData:
[[1. 1. 3. 4.]
 [1. 0. 1. 2.]
 [0. 1. 1. 7.]]

aaData:
[[], [], []]

aaData[2]:
[[1. 1. 3. 4.]
 [1. 0. 1. 2.]]

X:
[[3. 4.]
 [1. 2.]]

愚蠢的 Python“复杂数据的花哨运算符证明你根本不了解 OOP,并且仍然生活在 20 世纪。” (罗博·德登)


推荐阅读