[Machine Learning]Python机器学习库

Numpy:

numpy提供两种基本的对象:ndarray和ufunc,ndarray是存储单一数据类型的多为数组,ufunc是能够对数组进行操作的函数。

创建数组:

a = numpy.array([1, 2, 3, 4])

b = np.array([[1, 2, 3, 4], [4, 5, 6, 7]])

数组的形状可以通过其shape属性获得,它是一个描述数组各个轴长度的元组:

1 a.shape
2 # 结果: (4,)
3 b.shape
4 # 结果: (2, 4)

在保持数组元素个数不变的情况下,可以通过改变数组shape属性,改变数组每个轴的大小:(数组元素在内存中的位置不变)

1 b.shape = 4,2
2 #结果
3 #array([[1, 2],
4 #       [3, 4],
5 #      [4, 5],
6 #       [6, 7]])

当设置某个轴的元素个数为-1时,将自动计算此轴的长度。使用reshape()方法可以创建指定形状的新数组,原数组保持不变,新数组和原数组是共享存储空间的,修改会相互影响:

1 c = b.reshape(2, 4)
2 #结果
3 #array([[1, 2, 3, 4],
4 #      [4, 5, 6, 7]])

数组元素的类型可以通过dtype属性获得:

c.dtype
#结果
# dtype(‘int64‘)

可以用dtype参数在创建数组时指定元素类型,float是64bit的双精度浮点类型,complex是128bit的双精度复数类型:

1 numpy.array([1,2,3,4], dtype=np.float)

Numpy的完整的类型列表存储在typeDict字典中,可以将其转换为集合来查看:

{numpy.bool_,
 numpy.object_,
 numpy.string_,
 numpy.unicode_,
 numpy.void,
 numpy.int8,
 numpy.int16,
 numpy.int32,
 numpy.int64,
 numpy.int64,
 numpy.uint8,
 numpy.uint16,
 numpy.uint32,
 numpy.uint64,
 numpy.uint64,
 numpy.float16,
 numpy.float32,
 numpy.float64,
 numpy.float128,
 numpy.datetime64,
 numpy.timedelta64,
 numpy.complex64,
 numpy.complex128,
 numpy.complex256}

arange()通过指定开始值,终止值和步长创建表示等差数列的一位数组(不包括终止值):

1 numpy.arange(0, 1, 0.1)
2 #结果
3 #array([ 0. ,  0.1,  0.2,  0.3,  0.4,  0.5,  0.6,  0.7,  0.8,  0.9])

linspace()通过指定开始值,终止值和元素个数创建等差数列的一维数组:

1 numpy.linspace(0, 1, 10) #步长1/9
2 #结果
3 #array([ 0.        ,  0.11111111,  0.22222222,  0.33333333,  #0.44444444,
4 #        0.55555556,  0.66666667,  0.77777778,  0.88888889,  1.])
5
6 numpy.linspace(0, 1, 10, endpoint=False) #步长1/10
7 #结果
8 #array([ 0. ,  0.1,  0.2,  0.3,  0.4,  0.5,  0.6,  0.7,  0.8,  0.9])

logspace()用于创建等比数列。

zeros(), ones, empty()可以创建指定形状和类型的数组, zeros_like(),ones_like(), empty_like()可以用来创建数组的形状及类型相同, 例如zeros_like(a) 和 zeros(a.shape, a.dtype):

numpy.empty((2, 3), numpy.int) #只分配类型,不初始化
#结果
#array([[-5764607523034234880,  6917537799820997240,           4327211011],
#      [          4327214544,           4327214608,      844424930131968]])

numpy.zeros(4, numpy.float) #元素被初始化为0,默认类型numpy.float
#结果:
#array([ 0.,  0.,  0.,  0.])

frombuffer(),fromstring()和fromfile()等可以从字节序列或文件创建数组:

 1 s = "abcdefg"
 2 numpy.fromstring(s, dtype=numpy.int8)
 3 #结果:
 4 #array([ 97,  98,  99, 100, 101, 102, 103], dtype=int8)
 5
 6 s = "abcdef"
 7 numpy.fromstring(s, dtype=numpy.int16)
 8 #结果
 9 #array([25185, 25699, 26213], dtype=int16)
10 # 其中每个元素等于两个字节表示一个整数,98 * 256 + 97

还可以定义一个从下标计算数值的函数,然后使用fromfunction()创建数组:

def func(i):
    return i % 4 + 1

numpy.fromfunction(func, (10, ))
#结果
#array([ 1.,  2.,  3.,  4.,  1.,  2.,  3.,  4.,  1.,  2.])

 存取元素:

a = numpy.arange(10)
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

a[5] #用整数作为下标可以获取数组中的某个元素
#结果:5

a[3 : 5] #用切片作为下标获取数组一部分,不包括a[5]
#结果:array([3, 4])

a[2:4]=100,101 #用下标来修改元素的值
#结果:array([  0,   1, 100, 101,   4,   5,   6,   7,   8,   9])

通过切片获取的新数组是原数组的一个数组,它与原始数组共享同一数据空间。

使用整数列表对数组元素进行存取时,得到的新数组不和原始数组共享数据,整数数组和布尔数组类似:

1 x = numpy.arange(10, 1, -1)
2 #array([10,  9,  8,  7,  6,  5,  4,  3,  2])
3
4 x[[3, 3, 1, 8]] #获取数组中下标为3, 3, 1, 8的四个元素,组成一个新的数组
时间: 2025-01-10 04:39:18

[Machine Learning]Python机器学习库的相关文章

OpenCV Machine Learning Library 机器学习库总体结构探微

原创博客,转载请:http://blog.csdn.net/zhjm07054115/article/details/27577181 OpenCV Machine Learning Library 机器学习库总体结构探微

Python机器学习库资料汇总

声明:以下内容转载自平行宇宙. Python在科学计算领域,有两个重要的扩展模块:Numpy和Scipy.其中Numpy是一个用python实现的科学计算包.包括: 一个强大的N维数组对象Array: 比较成熟的(广播)函数库: 用于整合C/C++和Fortran代码的工具包: 实用的线性代数.傅里叶变换和随机数生成函数. SciPy是一个开源的Python算法库和数学工具包,SciPy包含的模块有最优化.线性代数.积分.插值.特殊函数.快速傅里叶变换.信号处理和图像处理.常微分方程求解和其他科

常用python机器学习库总结

开始学习Python,之后渐渐成为我学习工作中的第一辅助脚本语言,虽然开发语言是Java,但平时的很多文本数据处理任务都交给了Python.这些年来,接触和使用了很多Python工具包,特别是在文本处理,科学计算,机器学习和数据挖掘领域,有很多很多优秀的Python工具包可供使用,所以作为Pythoner,也是相当幸福的.如果仔细留意微博和论坛,你会发现很多这方面的分享,自己也Google了一下,发现也有同学总结了"Python机器学习库",不过总感觉缺少点什么.最近流行一个词,全栈工

[resource]Python机器学习库

reference: http://qxde01.blog.163.com/blog/static/67335744201368101922991/ Python在科学计算领域,有两个重要的扩展模块:Numpy和Scipy.其中Numpy是一个用python实现的科学计算包.包括: 一个强大的N维数组对象Array: 比较成熟的(广播)函数库: 用于整合C/C++和Fortran代码的工具包: 实用的线性代数.傅里叶变换和随机数生成函数. SciPy是一个开源的Python算法库和数学工具包,S

[转载]Python机器学习库

Python 在科学计算领域,有两个重要的扩展模块:Numpy和Scipy.其中Numpy是一个用python实现的科学计算包.包括: 一个强大的N维数组对象Array: 比较成熟的(广播)函数库: 用于整合C/C++和Fortran代码的工具包: 实用的线性代数.傅里叶变换和随机数生成函数. SciPy是一个开源的Python算法库和数学工具包,SciPy包含的模块有最优化.线性代数.积分.插值.特殊函数.快速傅里叶变换.信号处理和图像处理.常微分方程求解和其他科学与工程中常用的计算.其功能与

Machine Learning - XVII. Large Scale Machine Learning大规模机器学习 (Week 10)

http://blog.csdn.net/pipisorry/article/details/44904649 机器学习Machine Learning - Andrew NG courses学习笔记 Large Scale Machine Learning大规模机器学习 Learning With Large Datasets大数据集学习 Stochastic Gradient Descent随机梯度下降 Mini-Batch Gradient Descent迷你批处理梯度下降 Stochas

Python 机器学习库 NumPy 教程

0 Numpy简单介绍 Numpy是Python的一个科学计算的库,提供了矩阵运算的功能,其一般与Scipy.matplotlib一起使用.其实,list已经提供了类似于矩阵的表示形式,不过numpy为我们提供了更多的函数.如果接触过matlab.scilab,那么numpy很好入手. 1 安装 pip install numpy 在NumPy中,维度称之为axis(复数是axes),维度的数量称之为rank. (通用做法import numpu as np 简单输入) 2 多维数组 NumPy

Python机器学习库scikit-learn实践

原文:http://blog.csdn.net/zouxy09/article/details/48903179 一.概述 机器学习算法在近几年大数据点燃的热火熏陶下已经变得被人所“熟知”,就算不懂得其中各算法理论,叫你喊上一两个著名算法的名字,你也能昂首挺胸脱口而出.当然了,算法之林虽大,但能者还是有限,能适应某些环境并取得较好效果的算法会脱颖而出,而表现平平者则被历史所淡忘.随着机器学习社区的发展和实践验证,这群脱颖而出者也逐渐被人所认可和青睐,同时获得了更多社区力量的支持.改进和推广. 以

機器學習基石(Machine Learning Foundations) 机器学习基石 作业四 课后习题解答

大家好,我是Mac Jiang,今天和大家分享coursera-NTU-機器學習基石(Machine Learning Foundations)-作业四的习题解答.笔者在做这些题目时遇到很多困难,当我在网上寻找答案时却找不到,而林老师又不提供答案,所以我就想把自己做题时对题目如何思考的写下来,为大家提供一些思路.当然,我对题目的理解不一定是正确的,如果各位博友发现错误请及时留言联系,谢谢!再次提醒:请不要以此博客作为通过考试的用途,还是更好学习.理解课程的途径!希望我的博客对您的学习有所帮助!