【十一】机器学习之路——Python基础数据运算

  没学习过Python的小伙伴可能会对之前博客里的代码里的array,arrange,list等一头雾水,今天咱们简单介绍一下Python里的这些基础的数据运算方法,及Python里的基础数据类型。本篇博客参考Runoob网站的python基础教程,有兴趣的小伙伴可以通过这个链接学习一下Python的基础知识。现在介绍一下python里的标准数据类型:

Python标准数据类型

在内存中存储的数据可以有多种类型。和其他语言一样Python里也有数字、字符串这些数据类型。在Python里定义了一些标准类型,用于存储各种类型的数据。

Python有五个标准的数据类型:

  • Numbers(数字)
  • String(字符串)
  • List(列表)
  • Tuple(元组)
  • Dictionary(字典)

Number(数字)

数字数据类型用于存储数值。当你指定一个值时,Number对象就会被创建:

var1 = 1
var2 = 10

Python支持四种不同的数字类型:
- int(有符号整型)
- long(长整型[也可以代表八进制和十六进制])
- float(浮点型)
- complex(复数)


python里支持复数,可以用 a + bj,或者 complex(a,b) 表示, 复数的实部 a 和虚部 b 都是浮点型。
实例:


String(字符串)

字符串或串(String)是由数字、字母、下划线组成的一串字符。
程序员最常见的字符串:

string="Hello World"

如果要从字符串中获取一段子字符串,可以使用变量 [头下标:尾下标],就可以截取相应的字符串,其中下标是从 0 开始算起,可以是正数或负数,下标可以为空表示取到头或尾。

实例:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

str = 'Hello World!'

print str           # 输出完整字符串
print str[0]        # 输出字符串中的第一个字符
print str[2:5]      # 输出字符串中第三个至第五个之间的字符串
print str[2:]       # 输出从第三个字符开始的字符串
print str * 2       # 输出字符串两次
print str + "TEST"  # 输出连接的字符串

输出结果

Hello World!
H
llo
llo World!
Hello World!Hello World!
Hello World!TEST

List(列表)

列表在Python里十分常见,是我们使用频率很高的一种数据类型,列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(即嵌套)。
列表用 [ ] 标识,是 python 最通用的复合数据类型。
列表中值的切割也可以用到变量 [头下标:尾下标] ,就可以截取相应的列表,从左到右索引默认 0 开始,从右到左索引默认 -1 开始,下标可以为空表示取到头或尾。
加号 + 是列表连接运算符,星号 * 是重复操作。如下实例:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

list = [ 'runoob', 786 , 2.23, 'john', 70.2 ]
tinylist = [123, 'john']

print list               # 输出完整列表
print list[0]            # 输出列表的第一个元素
print list[1:3]          # 输出第二个至第三个元素 
print list[2:]           # 输出从第三个开始至列表末尾的所有元素
print tinylist * 2       # 输出列表两次
print list + tinylist    # 打印组合的列表

输出结果:

['runoob', 786, 2.23, 'john', 70.2]
runoob
[786, 2.23]
[2.23, 'john', 70.2]
[123, 'john', 123, 'john']
['runoob', 786, 2.23, 'john', 70.2, 123, 'john']


上一篇博客里logistic回归python实现的一段代码,dataMat和labelMat就赋值为列表,然后利用for循环将数据一个一个添加到列表中去,如下所示:

def loadDataSet ():
    dataMat = []; labelMat = []#dataMat为X输入数据,labelMat为输出0,1数据
    fr = open('/Users/cailei/Cai_Lei/AI/MachineLearning_data/Ch05/testSet.txt')
    for line in fr.readlines():
        lineArr = line.strip().split()#移除头尾指定字符,并将数据分割为不同部分
        dataMat.append([1.0,float(lineArr[0]),float(lineArr[1])])#令X0=1.0,X1为第一列数据,X2为第二列数据
        labelMat.append(int(lineArr[2]))#将第三列数据赋值为输出数据
    #print(dataMat)
    return dataMat,labelMat

再写一个简单的例子:

#将dict1里的数据一个一个添加到dict里去
dict = [1,2,3]
dict1 = [4,5,6]
n=len(dict1)
for i in range(n):
    dict.append(dict1[i])
print dict  

#将dict1和dict2直接相加也同样可以
dict = [1,2,3]
dict1 = [4,5,6]
dict2 = dict1+dict
print dict2  

输出结果如下所示:

[1, 2, 3, 4, 5, 6]
[456123]

还有一些列表的函数append(),sort(),count()等与操作可以参考Runoob网站的python基础教程


Tuple(元组)

元组是另一个数据类型,类似于List(列表)。
元组用”()”标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表。

#!/usr/bin/python
# -*- coding: UTF-8 -*-

tuple = ( 'runoob', 786 , 2.23, 'john', 70.2 )
tinytuple = (123, 'john')

print tuple               # 输出完整元组
print tuple[0]            # 输出元组的第一个元素
print tuple[1:3]          # 输出第二个至第三个的元素 
print tuple[2:]           # 输出从第三个开始至列表末尾的所有元素
print tinytuple * 2       # 输出元组两次
print tuple + tinytuple   # 打印组合的元组

输出结果:

('runoob', 786, 2.23, 'john', 70.2)
runoob
(786, 2.23)
(2.23, 'john', 70.2)
(123, 'john', 123, 'john')
('runoob', 786, 2.23, 'john', 70.2, 123, 'john')

Dictionary(字典)

字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型。列表是有序的对象集合,字典是无序的对象集合。
两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
字典用”{ }”标识。字典由索引(key)和它对应的值value组成。

#!/usr/bin/python
# -*- coding: UTF-8 -*-

dict = {}
dict['one'] = "This is one"
dict[2] = "This is two"

tinydict = {'name': 'john','code':6734, 'dept': 'sales'}


print dict['one']          # 输出键为'one' 的值
print dict[2]              # 输出键为 2 的值
print tinydict             # 输出完整的字典
print tinydict.keys()      # 输出所有键
print tinydict.values()    # 输出所有值

输出结果

This is one
This is two
{'dept': 'sales', 'code': 6734, 'name': 'john'}
['dept', 'code', 'name']
['sales', 6734, 'john']


  讲完了python里最基础的一些数据格式,大家有个概念上的理解,最好自己写写简单的代码加深印象,下一篇博客简单讲一下python里的numpy库,非常重要且常用的库。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值