Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.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 使用Matplotlib和csv2rec设置数据类型_Python_Numpy_Matplotlib - Fatal编程技术网

Python 使用Matplotlib和csv2rec设置数据类型

Python 使用Matplotlib和csv2rec设置数据类型,python,numpy,matplotlib,Python,Numpy,Matplotlib,我正在学习Matplotlib,并尝试手动实现一个简单的线性回归。 但是,在使用csv2rec之后导入并处理数据时遇到了一个问题 data= matplotlib.mlab.csv2rec('KC_Filtered01.csv',delimiter=',') x = data['list_price'] y = data['square_feet'] sumx = x.sum() sumy = y.sum() sumxSQ = sum([sq**2 for sq in x]) sumySQ

我正在学习Matplotlib,并尝试手动实现一个简单的线性回归。 但是,在使用csv2rec之后导入并处理数据时遇到了一个问题

data= matplotlib.mlab.csv2rec('KC_Filtered01.csv',delimiter=',')

x = data['list_price']
y = data['square_feet']

sumx = x.sum()
sumy = y.sum()

sumxSQ = sum([sq**2 for sq in x])
sumySQ = sum([sq**2 for sq in y])
我正在读一份房价表,试图得到平方和。但是,当csv2rec从文件中读取价格时,它将这些值存储为int32。由于房价的平方和大于32位整数,因此溢出。但是,我没有看到更改csv2rec读取文件时分配的数据类型的方法。在读入或分配阵列时,如何更改数据类型

x = data['list_price'].astype('int64')
y
相同


并且:
csv2rec
有一个
converterd
参数:

可以使用与numpy等效的函数
numpy.loadtxt
()来读取数据,而不是
mlab.csv2rec
。此函数有一个参数,用于指定数据的数据类型

或者,如果您想使用列名(如示例代码中所示),可以使用函数
numpy.genfromtxt
()。这类似于loadtxt,但有更多选项,例如从文件的第一行读取列名(使用
names=True

其用法示例如下:

In [9]:
import numpy as np
from StringIO import StringIO
data = StringIO("a, b, c\n 1, 2, 3\n 4, 5, 6")
np.genfromtxt(data, names=True, dtype = 'int64', delimiter = ',')

Out[9]: 
array([(1L, 2L, 3L), (4L, 5L, 6L)], 
      dtype=[('a', '<i8'), ('b', '<i8'), ('c', '<i8')])
或者在一行中:

sumxSQ = numpy.sum(x**2)

感谢大家对方块和循环的关注,我真的可以看到这将使代码更加简单和干净。我一直在避免使用loadtxt,因为dtype数组似乎对格式字符串没有明确的解释。我看看以后是否可以继续下去。你说的“dtype数组似乎对格式字符串没有明确的解释”是什么意思?您只需使用
dtype='int64'
。我添加了一个示例。在读取由不同列类型组成的数组时(例如,混合字符串、int和float时),loadtxt函数需要一个dtype字典。我之所以使用csv2rec,是因为它可以自动读取各种数据类型,并允许我专注于数据集和问题本身,而不是试图理解数据类型字典。我知道这可能过于简单,但我正在采用“先走后跑”的方法来学习Matplotlib和Numpy/Scipy。不过,我真的很欣赏这个例子。啊,我理解。这就是我通常使用
genfromtxt
而不是
loadtxt
的原因,因为它可以从数据中读取名称和数据类型,如
csv2rec
。谢谢!这很有魅力。我不知道numpy有合适的演员。link甚至有我在前面的评论中寻找的类型格式化字符串。再次感谢!
sumxSQ = numpy.sum(x**2)