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的数组类是ndarray,它有一个别名是 numpy.array,但这与Python标准库的array.array并不一样。后者仅仅是一个一维数组。而ndarray具有以下的属性:

  • ndarray.ndim:数组的维数。在Python世界中,维数称之为rank
  • ndarray.shape:数组的维度。这是一系列数字,长度由数组的维度(ndim)决定。例如:长度为n的一维数组的shape是n。一个n行m列的矩阵的shape是n,m
  • ndarray.size:数组中所有元素的数量
  • ndarray.dtype:数组中元素的类型,例如numpy.int32numpy.int16或者numpy.float64
  • ndarray.itemsize:数组中每个元素的大小,单位为字节
  • ndarray.data:存储数组元素的缓冲。通常我们只需要通过下标来访问元素,而不需要访问缓冲

以list或tuple变量为参数产生一维数组:

np.array([1,2,3,4]) 

np.array((1.2,2,3,4))  

以list或tuple变量为元素产生二维数组或者多维数组:

np.array(((1,2,3),(4,5,6)))  

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

我们也可以在创建数组的时候,指定元素的类型,例如这样:

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

可以使用astype转换类型,在处理文件时候这个会很实用,注意astype 调用会返回一个新的数组,也就是原始数据的一份拷贝。

numeric_strings2 = np.array([‘1.23‘,‘2.34‘,‘3.45‘],dtype=np.string_)
print(numeric_strings2)
[b‘1.23‘ b‘2.34‘ b‘3.45‘]

t=numeric_strings2.astype(float)
print(t)
[ 1.23  2.34  3.45]

3 numpy索引(index)与切片(slicing)

  • index 和slicing :第一数值类似数组横坐标,第二个为纵坐标;
x=np.array(((1,2,3,4),(5,6,7,8),(9,10,11,12)))
y=x[:,1]
y[0]=20
print(y)
print(x)

结果:

通过上面可以发现改变y会改变x ,因而我们可以推断,y和x指向是同一块内存空间值,系统没有为y 新开辟空间把x值赋值过去。

arr = np.arange(10)
arr[3:6]=10
print(arr)

结果:

思考为什么这么设计? Numpy 设计是为了处理大数据,如果切片采用数据复制话会产生极大的性能和内存消耗问题。

  • 假如说需要对数组是一份副本而不是视图可以如下操作:
arr = np.arange(10)
arr_copy = arr[3:6].copy()
print(arr_copy)
arr_copy[:]=24
print(arr_copy)
print(arr)

结果:

  • 再看下对list 切片修改(这里设计到python 中深浅拷贝,其中切片属于浅拷贝):
l=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
l[5:8] = 12 #报错 TypeError: can only assign an iterable
print(l)
l1= l[5:8]
print(l1)
l1[0]=12
print(l1)
print(l)

结果:

4 多维数组索引(index)、切片(slicing)

arr2d = np.arange(1,10).reshape(3,3)
print(arr2d)
print(arr2d[2])
print(arr2d[0][2])
print(arr2d[0,2])

结果:

5 基本的矩阵运算

转置:

a = np.array([[1,0],[2,3]])
print(a)
print()
print(a.transpose())

结果:

特征值、特征向量:

6 Shape与操作

除了生成数组之外,当我们已经持有某个数据之后,我们可能会需要根据已有数组来产生一些新的数据结构,这时候我们可以使用下面这些函数:

  • reshape:根据已有数组和指定的shape,生成一个新的数组
  • vstack:用来将多个数组在垂直(v代表vertical)方向拼接(数组的维度必须匹配)
  • hstack:用来将多个数组在水平(h代表horizontal)方向拼接(数组的维度必须匹配)
  • hsplit:用来将数组在水平方向拆分
  • vsplit:用来将数组在垂直方向拆分

7 特定array的创建

在实际上的项目工程中,我们常常会需要一些特定的数据,NumPy中提供了这么一些辅助函数:

  • zeros:用来创建元素全部是0的数组
  • ones:用来创建元素全部是1的数组
  • empty:用来创建未初始化的数据,因此是内容是不确定的
  • arange:通过指定范围和步长来创建数组
  • linespace:通过指定范围和元素数量来创建数组
  • random:用来生成随机数

参考:

numpy 基础入门 - 30分钟学会numpy

Python 机器学习库 NumPy 教程

原文地址:https://www.cnblogs.com/hoaprox/p/10968053.html

时间: 2024-10-08 16:00:04

Python 机器学习库 NumPy 教程的相关文章

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包含的模块有最优化.线性代数.积分.插值.特殊函数.快速傅里叶变换.信号处理和图像处理.常微分方程求解和其他科学与工程中常用的计算.其功能与

[学习笔记] Python标准库简明教程 [转]

1 操作系统接口 os 模块提供了一系列与系统交互的模块: >>> os.getcwd() # Return the current working directory '/home/minix/Documents/Note/Programming/python/lib1' >>> os.chdir('~/python') # Change current working directory Traceback (most recent call last): File

Python机器学习库scikit-learn实践

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

2018年最受欢迎Python机器学习库介绍

Python是一种面向对象的解释型计算机程序设计语言,具有丰富和强大的库,再加上其简单.易学.速度快.开源免费.可移植性.可扩展性以及面向对象的特点,Python成为2017年最受欢迎的最受欢迎的编程语言! 人工智能是当前最热门话题之一,机器学习技术是人工智能实现必备技能,Python编程语言含有最有用的机器学习工具和库,以下是Python开发工程师必知的十大机器学习库! 一.Scikit-Learn 在机器学习和数据挖掘的应用中,Scikit-Learn是一个功能强大的Python包,我们可以

Python机器学习之NumPy函数库

NumPy函数库是Python开发环境的一个独立模块,而且大多数Python发行版没有默认安装NumPy函数库,因此在安装Python之后必须单独安装NumPy函数库. 在Python shell开发环境中输入下列命令: >>> from numpy import * 如果没报错就表明NumPy函数库正确安装. 上述命令将NumPy函数库中的所有模块引入当前的命名空间. 然后在Python shell开发环境中输入下述命令: >>> random.rand(4,4) a

【机器学习】--Python机器学习库之Numpy

一.前述 NumPy(Numerical Python的缩写)是一个开源的Python科学计算库.使用NumPy,就可以很自然地使用数组和矩阵. NumPy包含很多实用的数学函数,涵盖线性代数运算.傅里叶变换和随机数生成等功能. 这个库的前身是1995年就开始开发的一个用于数组运算的库.经过了长时间的发展,基本上成了绝大部分Python科学计算的基础包,当然也包括所有提供Python接口的深度学习框架. 二.具体应用 1.背景--为什么使用Numpy? a) 便捷: 对于同样的数值计算任务,使用