Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.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
Python 3.x Can';t似乎不使用pandas来读取csv和读取csv来正确读取numpy数组_Python 3.x_Pandas_Numpy - Fatal编程技术网

Python 3.x Can';t似乎不使用pandas来读取csv和读取csv来正确读取numpy数组

Python 3.x Can';t似乎不使用pandas来读取csv和读取csv来正确读取numpy数组,python-3.x,pandas,numpy,Python 3.x,Pandas,Numpy,问题似乎源于我在尝试对nparray执行操作时读取csv,而read_csv存在类型问题。以下是一个最低限度的工作示例 x = np.array([0.83151197,0.00444986]) df = pd.DataFrame({'numpy': [x]}) np.array(df['numpy']).mean() Out[151]: array([ 0.83151197, 0.00444986]) 这正是我所期望的。但是,如果我将结果写入一个文件,然后将数据读回一个数据帧,则类型将被

问题似乎源于我在尝试对nparray执行操作时读取csv,而read_csv存在类型问题。以下是一个最低限度的工作示例

x = np.array([0.83151197,0.00444986])
df = pd.DataFrame({'numpy': [x]})
np.array(df['numpy']).mean()

Out[151]: array([ 0.83151197,  0.00444986])
这正是我所期望的。但是,如果我将结果写入一个文件,然后将数据读回一个数据帧,则类型将被破坏

x = np.array([0.83151197,0.00444986])
df = pd.DataFrame({'numpy': [x]})
df.to_csv('C:/temp/test5.csv')
df5 = pd.read_csv('C:/temp/test5.csv', dtype={'numpy': object})
np.array(df5['numpy']).mean()
TypeError:/:“str”和“long”的操作数类型不受支持

以下是“df5”对象的输出

以下是文件内容:

,numpy
0,[ 0.83151197  0.00444986]
我找到的唯一方法是读取数据并手动转换类型,这看起来既愚蠢又缓慢

[float(num) for num in df5['numpy'][0][1:-1].split()]
是否仍有避免上述情况的方法?

pd.DataFrame({'col\u name':data})
需要与
数据类似的一维数组对象:

In [63]: pd.DataFrame({'numpy': [0.83151197,0.00444986]})
Out[63]:
      numpy
0  0.831512
1  0.004450

In [64]: pd.DataFrame({'numpy': np.array([0.83151197,0.00444986])})
Out[64]:
      numpy
0  0.831512
1  0.004450
您已经用
[]
包装了numpy数组,因此传递了一个numpy数组列表:

In [65]: pd.DataFrame({'numpy': [np.array([0.83151197,0.00444986])]})
Out[65]:
                      numpy
0  [0.83151197, 0.00444986]
df=pd.DataFrame({'numpy':[x]})
替换为
df=pd.DataFrame({'numpy':x})

演示:

pd.DataFrame({'col\u name':data})
需要一个与
数据类似的1D数组:

In [63]: pd.DataFrame({'numpy': [0.83151197,0.00444986]})
Out[63]:
      numpy
0  0.831512
1  0.004450

In [64]: pd.DataFrame({'numpy': np.array([0.83151197,0.00444986])})
Out[64]:
      numpy
0  0.831512
1  0.004450
您已经用
[]
包装了numpy数组,因此传递了一个numpy数组列表:

In [65]: pd.DataFrame({'numpy': [np.array([0.83151197,0.00444986])]})
Out[65]:
                      numpy
0  [0.83151197, 0.00444986]
df=pd.DataFrame({'numpy':[x]})
替换为
df=pd.DataFrame({'numpy':x})

演示:



对象
=无转换。这些类型基本上都是字符串。您需要将eval convert对象转换为list@cᴏʟᴅsᴘᴇᴇᴅ 我使用了dtype作为
dtype={'numpy':np.float64}
但是get
ValueError:无法将字符串转换为float:[0.83151197 0.00444986]
显示文件内容和df5对象。@hpaulj添加到原始帖子中,以便其他人可以看到它。
对象
=无转换。这些类型基本上都是字符串。您需要将eval convert对象转换为list@cᴏʟᴅsᴘᴇᴇᴅ 我使用了dtype作为
dtype={'numpy':np.float64}
但是get
ValueError:无法将字符串转换为float:[0.83151197 0.00444986]
显示文件内容和df5对象。@hpaulj添加到原始帖子中,以便其他人可以看到它。似乎有同样的问题。谢谢,但我实际上需要数组。我的数据最终将成为
文件1、[value1、value2、value3、value3]文件2、[value4、value4、value5、value6]
。按照您建议的方式进行计算将使计算变得更加困难,因为我最终将不得不对value1和value4(平均值、标准差等)、Value2和value4、value3和value5等的值进行统计。@KevinVasko,您的所有列是否都包含列表,还是只包含其中的一部分?@KevinVasko,我不建议您将列表、dict、set等复杂对象存储在Pandas单元格中-您将失去灵活性,大多数矢量化函数将无法处理此类列…这是目前唯一一个包含数组的函数。似乎存在相同的问题。谢谢,但我实际上需要数组。我的数据最终将成为
文件1、[value1、value2、value3、value3]文件2、[value4、value4、value5、value6]
。按照您建议的方式进行计算将使计算变得更加困难,因为我最终将不得不对value1和value4(平均值、标准差等)、Value2和value4、value3和value5等的值进行统计。@KevinVasko,您的所有列是否都包含列表,还是只包含其中的一部分?@KevinVasko,我不建议您将列表、dict、set等复杂对象存储在Pandas单元格中-您将失去灵活性,大多数矢量化函数将无法处理此类列…这是当前唯一包含数组的函数。