gpt4 book ai didi

csv - genfromtxt dtype=None 返回错误的形状

转载 作者:行者123 更新时间:2023-12-02 07:45:05 25 4
gpt4 key购买 nike

我是 numpy 的新手,并且很难使用 genfromtxt 将 CSV 读取到 numpy 数组中。

我在网上找到了一个 CSV 文件,我将其用作示例。它是 float 和字符串的混合体。在这里:http://pastebin.com/fMdRjRMv

我正在通过 pylab 使用 numpy(通过:ipython -pylab 在 Ubuntu 系统上初始化)。 numpy.version.version 是 1.3.0。

这是我的工作:

示例 #1:

data = genfromtxt("fMdRjRMv.txt", delimiter=',', dtype=None)

data.shape

(374, 15)


data[10,10] ## Take a look at an example element

'30'

type(data[10,10])

type 'numpy.string_'

CSV 文件中没有错误的引号,所以我不知道为什么它应该认为数字是一个字符串。有谁知道为什么会这样?

示例 #2(跳过第一行):

data = genfromtxt("fMdRjRMv.txt", delimiter=',', dtype=None, skiprows=1)

数据形状

(373,)

有谁知道它为什么不将所有这些读入一维数组?

非常感谢!

最佳答案

在您的示例 #1 中,问题在于单个列中的所有值必须共享相同的数据类型。由于数据文件的第一行有列名,这意味着每列的数据类型都是字符串。

您在示例#2 中跳过第一行的想法是正确的。但是请注意,1.3.0 是一个相当旧的版本(我有 1.6.1)。在较新的版本中,不推荐使用 skiprows,您应该改用 skip_header

数组的形状是(373,)的原因是它是一个结构化数组(见http://docs.scipy.org/doc/numpy/user/basics.rec.html),这是numpy用来表示非同质数据的。因此 data[10] 为您提供表格的一整行。您还可以按名称访问数据列,例如 data['f10']。您可以在 data.dtype.names 中找到列的名称。也可以使用数据文件第一行中定义的原始列名:

 data = genfromtxt("fMdRjRMv.txt", dtype=None, delimiter=',', names=True)

然后您可以访问像 data['Age'] 这样的列。

关于csv - genfromtxt dtype=None 返回错误的形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7622045/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com