无法将数组转换为浮点数python
Posted
技术标签:
【中文标题】无法将数组转换为浮点数python【英文标题】:Cannot convert array to floats python 【发布时间】:2013-08-19 00:03:00 【问题描述】:我遇到的问题似乎很容易解释。 我正在努力将我的数组元素转换为浮点数(以便我可以乘以,添加等)
import csv
import os
import glob
import numpy as np
def get_data(filename):
with open(filename, 'r') as f:
reader = csv.reader(f)
return list(reader)
all_data = []
path=raw_input('What is the directory?')
for infile in glob.glob(os.path.join(path, '*.csv')):
all_data.extend(get_data(infile))
a = np.array(all_data)
current_track_data=a[0:,[8,9,10,11,12]]
abs_track_data=a[0:,7]
我得到了错误:
> --------------------------------------------------------------------------- ValueError Traceback (most recent call last) C:\Users\AClayton\AppData\Local\Enthought\Canopy\App\appdata\canopy-1.0.3.1262.win-x86_64\lib\site-packages\IPython\utils\py3compat.pyc in execfile(fname, glob, loc)
174 else:
175 filename = fname
--> 176 exec compile(scripttext, filename, 'exec') in glob, loc
177 else:
178 def execfile(fname, *where):
>
> C:\Users\AClayton\Current\python begin\code_tester2.py in <module>()
> 18 for infile in glob.glob(os.path.join(path, '*.csv')): # performs loop for each file in the specified path with extension .csv
> 19 all_data.extend(get_data(infile))
> ---> 20 a = np.ndarray(all_data, dtype=float)
> 21
> 22 current_track_data=a[0:,[8,9,10,11,12]]
>
> ValueError: sequence too large; must be smaller than 32
【问题讨论】:
你能看看你的代码吗?它与异常中的内容不匹配。我看到了一些差异,包括一些缩进。 你也能显示第 19 行的输出吗? 【参考方案1】:您的脚本与您发布的代码不同...正如您的错误回溯所示,在第 20 行,您正在调用 np.ndarray
。那是numpy array object,而不是np.array
factory function。除非您非常清楚自己在做什么,否则请遵循文档建议并:
应使用
array
、zeros
或empty
构造数组(请参阅 另请参阅下面的部分)。这里给出的参数是指 用于实例化数组的低级方法 (ndarray(...)
)。
所以将第 20 行更改为:
a = np.array(all_data, dtype=float)
你应该没事的。
您遇到的错误是因为ndarray
将您的第一个输入作为要创建的数组的形状。我的 Windows 系统上设置为 32 的维数有一个硬编码限制(可能取决于平台,不确定)。您的 all_data
列表包含超过 32 个条目(或您系统中的任何值),被误解为尺寸大小,这就是触发错误的原因。
【讨论】:
抱歉错误和延迟回复。感谢您在这件事上的帮助,我应该检查 ndarray 的元素。此外,我现在已将其更改为数组并收到错误:ValueError: setting an array element with a sequence。我认为那是因为我仍在使用“all_data”进行设置? 我想我发现了问题:all_data 的最后一行只有一半的值。如果我删除最后一行,它应该可以工作......以上是关于无法将数组转换为浮点数python的主要内容,如果未能解决你的问题,请参考以下文章
Python:ValueError:无法将字符串转换为浮点数:'0'
Python ValueError:无法将字符串转换为浮点数:
ValueError:无法将字符串转换为浮点数:'62,6'