【问题标题】:Importing csv files as numpy compatible list of lists in python将csv文件导入为python中的numpy兼容列表列表
【发布时间】:2014-09-12 13:10:33
【问题描述】:

我正在尝试使用以下命令将 .csv 文件导入我的 IPython 笔记本:

import csv
datafile_dC = open('/Users/iMacHome/dual-Core.csv', 'r')
datareader_dC = csv.reader(datafile_dC)
data_dC = []
for row in datareader_dC:
data_dC.append(row)

data_dC = np.array(data_dC)
print data_dC

x = data_dC[:, 6]
y = data_dC[:, 7]

打印数据产量(速记):

[['1.29940' '-0.06908' '0.85295' ..., '-0.83824' '-0.11374' '0.11374']
 ['0.93471' '0.10030' '1.25981' ..., '-1.47697' '0.02932' '-0.02932']
 ['0.57901' '0.25031' '1.77954' ..., '-1.28751' '0.23731' '-0.23731']
 ..., 
 ['1.26506' '-0.21818' '0.60509' ..., '-1.15941' '-0.10211' '0.10211']
 ['1.22592' '-0.39114' '0.40631' ..., '-1.71412' '-0.08846' '0.08846']
 ['2.13359' '-0.51551' '0.30513' ..., '-2.07729' '-0.32911' '0.32911']]

但是,使用这种方法*似乎会产生以下错误:

TypeError: unsupported operand type(s) for *: 'float' and 'numpy.ndarray'

调用以下内容时:

def myBoundary(x, y0=-2.163, slope=-1.7):
    return (slope * x) + y0

y_boundary = myBoundary(x, y0=-2.163, slope=-1.7)

我知道这很简单,但如果有人能提出解决这个问题的方法,我将不胜感激。

注意 *手动将数据作为列表输入不会产生相同的错误。

【问题讨论】:

标签: python csv numpy matplotlib ipython-notebook


【解决方案1】:

试试这个:

def myBoundary(x, y0=-2.163, slope=-1.7):
    x = np.array([float(x0) for x0 in x])
    return (slope * x) + y0

你的数据是一个字符串列表

【讨论】:

  • y_boundary的长度与data_dC中的行数相同(也是x的长度)。你的意思是对你来说长度只有2?
  • 好像是这样,我有两个数据点:一个在分界线以下,一个在...?
  • 如果在调用 myBoundary 之前打印 x 会怎样? x的长度是多少?
  • 它对我有用(myBoundary 返回的长度与 x 的长度相同),所以我可以建议在行前后打印 x:x = np.array([float (x0) 对于 x0 中的 x])。也许 float() 转换的行为与您的文本输入不一样。
猜你喜欢
  • 1970-01-01
  • 2018-12-15
  • 2015-07-06
  • 2016-01-15
  • 2013-11-04
  • 1970-01-01
  • 1970-01-01
  • 2012-12-11
  • 1970-01-01
相关资源
最近更新 更多