- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我在读取 CSV 文件时遇到了 NumPy 1.10.2 的以下问题。我不知道如何为 genfromtxt
提供显式数据类型。
这是 CSV,minimal.csv
:
x,y
1,hello
2,hello
3,jello
4,jelly
5,belly
这里我尝试用genfromtxt来阅读它:
import numpy
numpy.genfromtxt('minimal.csv', dtype=(int, str))
我也试过:
import numpy
numpy.genfromtxt('minimal.csv', names=True, dtype=(int, str))
无论如何,我得到了错误:
Traceback (most recent call last):
File "visualize_numpy.py", line 39, in <module>
numpy.genfromtxt('minimal.csv', dtype=(int, str))
File "/Users/xeli/workspace/myproj/env/lib/python3.5/site-packages/numpy/lib/npyio.py", line 1518, in genfromtxt
replace_space=replace_space)
File "/Users/xeli/workspace/myproj/env/lib/python3.5/site-packages/numpy/lib/_iotools.py", line 881, in easy_dtype
ndtype = np.dtype(ndtype)
ValueError: mismatch in size of old and new data-descriptor
或者,我试过:
import numpy
numpy.genfromtxt('minimal.csv', dtype=[('x', int), ('y', str)])
抛出:
Traceback (most recent call last):
File "visualize_numpy.py", line 39, in <module>
numpy.genfromtxt('minimal.csv', dtype=[('x', int), ('y', str)])
File "/Users/xeli/workspace/myproj/env/lib/python3.5/site-packages/numpy/lib/npyio.py", line 1834, in genfromtxt
rows = np.array(data, dtype=[('', _) for _ in dtype_flat])
ValueError: size of tuple must match number of fields.
我知道 dtype=None
让 NumPy 尝试猜测正确的类型并且通常运行良好。但是,文档提到它比显式类型慢得多。在我的例子中,计算效率是必需的,所以 dtype=None
不是一个选项。
我的方法或 NumPy 有什么严重错误吗?
最佳答案
这很好用,并保留了您的 header 信息:
df = numpy.genfromtxt('minimal.csv',
names=True,
dtype=None,
delimiter=',')
这使得 genfromtxt
猜测 dtype,这通常是您想要的。分隔符是逗号,所以我们也应该传递该参数,最后,names=True
保留 header 信息。
像使用任何框架一样访问您的数据:
>>>>print(df['x'])
[1 2 3 4 5]
编辑:根据您在下面的评论,您可以明确提供数据类型,如下所示:
df = numpy.genfromtxt('file1.csv',
names=True,
dtype=[('x', int), ('y', 'S5')], # assuming each string is of len =< 5
delimiter=',')
关于python - NumPy:新旧数据描述符的大小不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34294742/
在什么情况下我们应该在 JDK 8 中使用旧的 foreach 循环遍历新的 collection.forEach() 还是最好的做法是转换 every foreach 循环?是否存在任何重要的性能差
我想使用新的 CoraData 模型创建应用程序的新版本(由其他人创建)。我的疑问是:核心数据模型通过更新是永久的。我想确保以前的 CoreData 模型不会对新版本的应用程序产生问题。 我必须遵循一
我正在阅读“Dennis Ritchie 的 C 编程语言”,并且在一开始它演示了一个代码,即以下 #include main() { printf("Hello, World"); } 根据本书,这
首先,我知道这个问题在过去几年中在 Stack Overflow 上被提出过几次。问题是有时我会收到新的 PayPal 结帐页面,有时会收到旧页面。 我在沙盒中创建了两个测试帐户。第一个采用新设计,第
我在同一 Google Analytics(分析)帐户中有多个配置文件,但我发现新创建的配置文件的跟踪代码不同。它们会影响跟踪功能吗? 旧代码: var _gaq = _gaq || [];
我是一名优秀的程序员,十分优秀!