【问题标题】:csv file to 2d list, then splitting onto list of 2d listscsv 文件到 2d 列表,然后拆分到 2d 列表列表
【发布时间】:2020-04-30 15:53:40
【问题描述】:

我将一个 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

【问题讨论】:

  • Python 列表没有维度aData 是一个列表,大概你希望像numpy.ndarray 一样操纵它loadtxt 是什么?
  • 根据报错aDataM是一个列表。 aDataM[:,10:] 是数组索引的有效样式,就像拆分 aData 时一样。你明白 Python listnumpy.ndarray 不同吗?
  • 没有二维列表这样的东西。列表可能包含列表,但每个列表都必须单独编制索引。

标签: python list numpy csv append


【解决方案1】:

我需要使用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 世纪。'(Robo Durden)

【讨论】:

    猜你喜欢
    • 2019-09-25
    • 1970-01-01
    • 2015-07-11
    • 1970-01-01
    • 2021-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-13
    相关资源
    最近更新 更多