Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将人工智能培训数据(.csv)读取到Python中的特定数据结构中_Python_Csv_Numpy_Data Structures_Artificial Intelligence - Fatal编程技术网

将人工智能培训数据(.csv)读取到Python中的特定数据结构中

将人工智能培训数据(.csv)读取到Python中的特定数据结构中,python,csv,numpy,data-structures,artificial-intelligence,Python,Csv,Numpy,Data Structures,Artificial Intelligence,我是python新手,我正在尝试执行一项简单的任务,即读取.csv文件并将其保存在特定的数据结构中。我使用numpy加载数据,得到了ndarray的ndarray,这不是我想要的 我的代码: import numpy filename = '../HTRU2/HTRU_2.csv' raw_data = open(filename, 'rU') data = numpy.loadtxt(raw_data, delimiter=',') 我要寻找的数据结构是一个列表,由元组组成。元组是一对(x,

我是python新手,我正在尝试执行一项简单的任务,即读取.csv文件并将其保存在特定的数据结构中。我使用numpy加载数据,得到了
ndarray
ndarray
,这不是我想要的

我的代码:

import numpy
filename = '../HTRU2/HTRU_2.csv'
raw_data = open(filename, 'rU')
data = numpy.loadtxt(raw_data, delimiter=',')
我要寻找的数据结构是一个
列表,由
元组组成。
元组是一对(x,y)的
ndarray
s:x是一个
ndarray
形状(nx-1,1)的
float
s,其中nx是文件中每行的元素数减去1;y是一个形状为(1,1)的
ndarray
,它保存行的最后一个元素(也是一个
浮点

你可能会认为这是我编造的一些疯狂的数据结构,但它实际上非常有用,因为我的最终目标是将其放入神经网络中(如果你知道NN,你可能会猜到元组实际上是一对输入/输出,两者都是列矩阵)。我不能改变数据结构

文件示例:

140.5625,55.68378214,-0.234571412,-0.699648398,3.199832776,19.11042633,7.975531794,74.24222492,0
102.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]]
第二个论点可能没有必要

最后:

df = [tuple(x) for x in df.values]

但是你真的需要一个元组层吗?为什么不添加一个维度:

In [67]: data.reshape(3,4,1)
Out[67]: 
array([[[ 0],
        [ 1],
        [ 2],
        [ 3]],

       [[ 4],
        [ 5],
        [ 6],
        [ 7]],

       [[ 8],
        [ 9],
        [10],
        [11]]])

我找到了一个解决方案:

import numpy
filename = '../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。

一些样本输入和结果数据结构将非常有用。另外,我猜你可能不想要这个结构,只是简单地为你的数据数组建立适当的索引,或者把它放到熊猫数据帧中。@miradulo我知道我遗漏了什么,对不起。将在几秒钟内进行编辑。首先,您能否从
csv
获取合理的二维浮点数组?没有错误,投诉列数不相等,
nan
用于字符串等?如果是这样的话,那么让我们不要再担心csv,集中精力将数组转换为您的结构。@hpaulj我没有错误,只是一个完美的2d数组,对我来说没有多大用处。为什么您需要每个浮点数都位于自己的
ndarray
?这没有多大意义
data.tolist()
将该数组转换为列表列表。然后,您可以遍历列表并将子列表转换为元组。这只会给我一个pandas.DataFrame,它本质上是一个数组数组(或类似数组的数组)。很抱歉,我一开始错过了您问题的这一部分。试试我的编辑。另外,它更像是一个Pandas系列数据结构的数组……非常好的语法,可以与R的dplyr相媲美。我认为它仍然没有创建我需要的元组。我已经对我的问题进行了编辑,以包括文件的示例和生成的数据结构。实际上,我在自己的代码中使用了这种精确的方法,所以它应该可以工作。你能详细说明这给你的输出出了什么问题吗?如果在你的代码之后我运行了我实际需要运行的代码,它会给我一个错误。代码:for _tuplein df:for x,y in _tuple:doSomething(x,y)Error:“numpy.float64”对象不可编辑。它接近我需要的值,但元组与我指定的值不完全相同。我的元组需要类似于一对(x,y),然后我可以对元组中的x,y执行
。请看我在问题中所写的示例。好的,您有一个额外的
ndarray
嵌套层。在显示中分离元组和ndarray层是一件痛苦的事情。还不清楚元组的内容是2d数组还是带有object dtype的1d数组。它确实类似于我所要求的,但我需要它基于元组。我把我的问题重新表述得更清楚了。
In [67]: data.reshape(3,4,1)
Out[67]: 
array([[[ 0],
        [ 1],
        [ 2],
        [ 3]],

       [[ 4],
        [ 5],
        [ 6],
        [ 7]],

       [[ 8],
        [ 9],
        [10],
        [11]]])
import numpy
filename = '../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)))