我是Python新手,正在尝试执行一个简单的任务,即读取一个.csv文件并将其保存到特定的数据结构中。我使用numpy来加载数据,得到的是一个ndarray
的ndarray
,这并不是我想要的。
我的代码如下:
import numpyfilename = '../HTRU2/HTRU_2.csv'raw_data = open(filename, 'rU')data = numpy.loadtxt(raw_data, delimiter=',')
我想要的数据结构是一个list
的tuples
。这些tuples
是一对(x,y)的ndarray
:x是一个形状为(nx – 1, 1)的ndarray
,其中填充了float
类型的数据,nx是文件中每行元素的数量减1;y是一个形状为(1, 1)的ndarray
,它保存了该行的最后一个元素(也是float
类型)。
你可能会认为这是一个我编造的奇怪数据结构,但实际上它非常有用,因为我的最终目标是将其放入神经网络中(如果你了解神经网络,你可能会猜到这个元组实际上是一对输入/输出,其中两者都是列矩阵)。我不能更改数据结构。
文件样本:
140.5625,55.68378214,-0.234571412,-0.699648398,3.199832776,19.11042633,7.975531794,74.24222492,0102.5078125,58.88243001,0.465318154,-0.515087909,1.677257525,14.86014572,10.57648674,127.3935796,0
每个元组看起来像这样:
# x y[[140.5625] [55.68378214][-0.234571412][-0.699648398][3.199832776][19.11042633][7.975531794][74.24222492]] , [[0]]
回答:
我已经找到了一个解决方案:
import numpyfilename = '../HTRU2/test.csv'file = open(filename, 'rU')data = numpy.loadtxt(file, delimiter=',')training_data = list()for test in data: training_data.append((test[:-1].reshape(8, 1), test[-1].reshape(1, 1)))
其中输入神经元的数量为8,输出神经元的数量为1。