SKlearning大部分的输入数据都是M * N数组.

然而我们从数据库或文件读取得来的通常是Python内定的类型tuple或list

它们的优势就不说了,但是直接把list或tuple构成的二维数组传入scikit是会出问题的.

如:

DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and will raise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.
DeprecationWarning)

下面贴上如何把list/tuple转为scikit使用的array

首先, 准备数据如下:

读取一行数据变为一维数组

    conn = sql.connect('result_sale.db')
conn.text_factory = str
dataSet = conn.execute('select * from sampleData')
tpRows = dataSet.fetchone()
conn.close()
print type(tpRows)
print tpRows lstRows = list(tpRows)
aryRows1 = np.array(lstRows) # 转成数组
#aryRows2 = np.array(lstRows).reshape(1, -1) # 转成1行N列 (二维数组)
#aryRows3 = np.array(lstRows).reshape(-1, 1) # 转成N行1列 (二维数组)
print lstRows
print aryRows1

输入如下: 请留意输入的不同点 :)

('00', '01', '02', '03', '04', '05', '06', '07', '08')  (tuple)
['00', '01', '02', '03', '04', '05', '06', '07', '08'] (list)
['00' '01' '02' '03' '04' '05' '06' '07' '08'] (array) Process finished with exit code 0

一次性转换整个数据集

    conn = sql.connect('result_sale.db')
conn.text_factory = str
dataSet = conn.execute('select * from sampleData')
tpRows = dataSet.fetchall()
conn.close() aryRows1 = np.array(tpRows) # 转成数组
#aryRows2 = np.array(tpRows).reshape(1, -1) # 转成1行N列 (二维数组)
#aryRows3 = np.array(tpRows).reshape(-1, 1) # 转成N行1列 (二维数组)
print aryRows1
#print aryRows2
#print aryRows3

输入如下:

[['00' '01' '02' '03' '04' '05' '06' '07' '08']
['10' '11' '12' '13' '14' '15' '16' '17' '18']
['20' '21' '22' '23' '24' '25' '26' '27' '28']
['30' '31' '32' '33' '34' '35' '36' '37' '38']
['40' '41' '42' '43' '44' '45' '46' '47' '48']
['50' '51' '52' '53' '54' '55' '56' '57' '58']
['60' '61' '62' '63' '64' '65' '66' '67' '68']
['70' '71' '72' '73' '74' '75' '76' '77' '78']
['80' '81' '82' '83' '84' '85' '86' '87' '88']] Process finished with exit code 0

逐条纪录转换, 可以用下标来引用数组

    conn = sql.connect('result_sale.db')
conn.text_factory = str
dataSet = conn.execute('select * from sampleData')
tpRows = dataSet.fetchall()
conn.close() #aryRows = np.zeros([len(tpRows), len(tpRows[0])])
aryRows = np.ones_like(tpRows) #亦可使用 empty, empty_like, zeros, zeros_like 等方法 j=0
for row in tpRows:
aryRows[j][:] = row
j += 1
print aryRows

输入如下:

[['00' '01' '02' '03' '04' '05' '06' '07' '08']
['10' '11' '12' '13' '14' '15' '16' '17' '18']
['20' '21' '22' '23' '24' '25' '26' '27' '28']
['30' '31' '32' '33' '34' '35' '36' '37' '38']
['40' '41' '42' '43' '44' '45' '46' '47' '48']
['50' '51' '52' '53' '54' '55' '56' '57' '58']
['60' '61' '62' '63' '64' '65' '66' '67' '68']
['70' '71' '72' '73' '74' '75' '76' '77' '78']
['80' '81' '82' '83' '84' '85' '86' '87' '88']] Process finished with exit code 0

List tuple 类型转成数组的更多相关文章

  1. PHP将对象转换成数组的方法(兼容多维数组类型)

    /** * @author gayayang * @date 2012-8-21 * @todo 将对象转换成数组 * @param unknown_type $obj * @return unkno ...

  2. python学习第五天 List和tuple类型介绍及其List切片

    List 和tuple: python提供一种类似C语言数组的类型,但是使用起来确是相当的简洁.那就讲讲这神奇的python中list 和tuple吧. List类型: 1.直接贴代码: L = [' ...

  3. 从jquery源码中看类型判断和数组的一些操作

    在深入看jquery源码中,大家会发现源码写的相当巧妙.那我今天也通过几个源码中用到的技巧来抛砖引玉,希望大家能共同研究源码之精华,不要囫囵吞枣. 1.将类数组转化成数组 我想大家首先想到的方法是fo ...

  4. oracle根据分隔符将字符串分割成数组函数

    --创建表类型 create or replace type mytype as table of number;--如果定义成varchar--CREATE OR REPLACE type myty ...

  5. 黄聪:PHP字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、切割成数组等)

    一.字符串替换 str_replace("iwind", "kiki", "i love iwind, iwind said"); 将输出 ...

  6. 将COleDateTime类型数据转换成char *数据

    用OpenCV做多摄像头校准时间,在图像上显示时间信息,需求要将COleDateTime类型数据转换成char *数据 具体代码如下: 1: COleDateTime m_checkDate; 2: ...

  7. Yii Active Record 查询结果转化成数组

    使用Yii 的Active Record 来获取查询结果的时候,返回的结果集是一个对象类型的,有时候为了数据处理的方便希望能够转成数组返回.比如下面的方法: // 查找满足指定条件的结果中的第一行 $ ...

  8. js 判断是否为数组的方式 及 类数组转换成数组格式

    1. 判断是否为数组的通用方式 Object.prototype.toString.call(o)=='[object Array]' 其他方式: typeof ,  instanceof,  ary ...

  9. .net 4.0 中的特性总结(四):Tuple类型

    Tuple是具有指定数量和顺序的值的一种数据结构.针对这种数据结构,.Net4.0中提供了一组Tuple类型,具体如下: Tuple   Tuple<T>   Tuple<T1, T ...

随机推荐

  1. MySQL入门02-MySQL二进制版本快速部署

    在上篇文章 MySQL入门01-MySQL源码安装 中,我们介绍了MySQL源码安装的方法. 源码安装虽然有着更加灵活和更加优化等诸多优势.但源码编译安装部署的过程相对复杂,而且整个过程所花费的时间很 ...

  2. .NET开源高性能Socket通信中间件Helios介绍及演示

    一:Helios是什么 Helios是一套高性能的Socket通信中间件,使用C#编写.Helios的开发受到Netty的启发,使用非阻塞的事件驱动模型架构来实现高并发高吞吐量.Helios为我们大大 ...

  3. 详解Javascript的继承实现

    我最早掌握的在js中实现继承的方法是在w3school学到的混合原型链和对象冒充的方法,在工作中,只要用到继承的时候,我都是用这个方法实现.它的实现简单,思路清晰:用对象冒充继承父类构造函数的属性,用 ...

  4. git学习之branch分支

    作为新手,站在我的角度肤浅的来理解,分支就是相当于开辟了一个新的临时工作区,在这个工作区进行文件代码改动,然后在合并到master主工作区,这样能保证主工作区的安全性和稳定性,对于团队协作尤为重要. ...

  5. LINQ to SQL语句(11)之Update

    说明:更新操作,先获取对象,进行修改操作之后,直接调用SubmitChanges()方法即可提交.注意,这里是在同一个DataContext中,对于不同的DataContex看下面的讲解. 1.简单形 ...

  6. 【C#】分享一个弹出容器层,像右键菜单那样召即来挥则去

    适用于:.net2.0+ Winform项目 ------------------201508261813更新(源码有更新.Demo未更新)------------------ 重新绘制调整大小手柄( ...

  7. SQL Server:APPLY表运算符

    SQL Server 2005(含)以上版本,新增了APPLY表运算,为我们日常查询带来了极大的方便. 新增的APPLY表运算符把右表表达式应用到左表表达式中的每一行.它不像JOIN那样先计算那个表表 ...

  8. asp.net mvc项目自定义区域

    前言 直接上干货就是,就不废话了. 使用场景:分离模块,多站点等~~ 一.分离模块 自定义视图引擎,设置视图路径格式 项目结构图 1.Code: 在Global.asax Application_St ...

  9. 【系统架构】缓存Memcache 使用原子性操作add,实现并发锁

    原文地址 memcache中Memcache::add()方法在缓存服务器之前不存在key时, 以key作为key存储一个变量var到缓存服务器.我们使用add来向服务器添加一个键值对应,如果成功则添 ...

  10. ABP 初探 之基于EasyUI的CURD

    结束了天天加班的项目,项目虽然结束,但还是有点小问题,只能在后期优化当中完成了,本次做项目采用了,MVC.Webapi.Entityframework,在园了里看到了有关ABP的介绍,同样ABP也是最 ...