一、numpy简介

Numpy是高性能科学计算和数据分析的基础包,机器学习三剑客之一。Numpy库中最核心的部分是ndarray 对象,它封装了同构数据类型的n维数组。部分功能如下:

  • ndarray, 具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组。
  • 用于对整组数据进行快速运算的标准数学函数(无需编写循环)。
  • 用于读写磁盘数据的工具以及用于操作内存映射文件的工具。
  • 线性代数、随机数生成以及傅里叶变换功能。
  • 用于集成C、C++、Fortran等语言编写的代码的工具。

二、NumPy的简单属性

import numpy as np

a = [[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12],
[13, 14, 15, 16]]
b = np.array(a) # 创建数组
size = b.size # 数组元素个数
shape = b.shape # 数组形状,返回一个数组一维和二维长度的元组
ndim = b.ndim # 数组维度
# numpy是无法直接判断出由数值与字符混合组成的数组中的数值型数据的,
# 因为由数值类型和字符类型组成的numpy数组已经不是数值类型的数组了,而是dtype='<U11'。
t = b.dtype # 数据类型 b[1, 2] #
b[1][2] # array_zero = np.zeros([3, 4]) # 快速创建一个 3 × 4 的数组,值为0
array_one = np.ones([3, 4]) # 快速创建一个 3 × 4 的数组,值为1 # arange函数用于创建等差数组
# arange([start,] stop[, step,], dtype=None) 其中start,step,dtype可以省略,分别是起始点、步长、和返回类型。
array_arange = np.arange(5) # 起始点0,结束点5,步长1,返回类型array,一维 # linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
# endpoint: 为true,stop是最后一个样本。否则,它不包括在内。默认true。
# retstep: 为true,则输出一个元组,元组第一个元素是生成的数列,第二个元素是步长
array_lin = np.linspace(1, 10, 5, False, True, dtype=int)
print(array_lin) c = np.random.rand(5, 5) # 创建一个 5 × 5 的数组,值在0-1之间 f = np.random.uniform(0, 100) # 创建指定范围内的一个随机数
i = np.random.randint(0, 100) # 创建指定范围内的一个随机整数 d = np.random.normal(2, 10, (2, 3)) # 对于一维数组来说,python原生的list和numpy的array的切片操作都是相同的。
# 对于多维数组,切片的数组必须是规则的
# [行起始索引:行结束索引, 列起始索引:列结束索引]
# 包含起始索引,不包含结束索引
slice_arr1 = b[1, :] # 取第 1 行数据
slice_arr2 = b[1:3, :] # 取第 1 行到第 3 行的数据,不包含第 3 行
# M 为行数,N为列数
slice_arr3 = b[:, 1] # 取第 1 列的数据,以 1 × N 数组形式返回
slice_arr4 = b[:, :2] # 取第 0 列的数据,以 M × 2 数组形式返回 slice_arr5 = b[1:2, 1:3] # 取第 1 - 2行(不含第2行),第 1 - 3 列(不含第3列)的矩阵数据

三、NumPy计算

import numpy as np

a = [[80, 88], [82, 81], [84, 75], [86, 83], [75, 81]]
b = np.array(a) c = b > 80 # 条件判断
d = np.where(b < 80, '差', '优') # 三目运算 vmax = np.amax(b) # 最大值
colMax = np.amax(b, axis=0) # 每一列的最大值
rowMax = np.amax(b, axis=1) # 每一行的最大值 vmin = np.amin(b) # 最小值
colMin = np.amin(b, axis=0) # 每一列的最小值
rowMin = np.amin(b, axis=1) # 每一行的最小值 vmean = np.mean(b) # 平均值
colmean = np.mean(b, axis=0) # 每一列的平均数
rowmean = np.mean(b, axis=1) # 每一行的平均数 vstd = np.std(b) # 方差
colstd = np.std(b, axis=0) # 每一列的方差
rowstd = np.std(b, axis=1) # 每一行的方差 b[:, 0] = b[:, 0] + 5 # 结合切片理解,所有行、第0列,加5

四、 数据读写

import numpy as np

src = [[0, 1, 2, 3, 4], [5, 6, 7, 8, 9]]

# save 和 load 以NumPy专用的二进制格式保存数据,它们会自动处理元素类型和形状等信息
# 如果文件路径末尾没有扩展名.npy或者是其他扩展名,该扩展名会被自动加上。
np.save('a', src)
a = np.load('a.npy')
print(a) # savez用于将多个数组保存到一个文件中,扩展名为.npz
# .npz是一个压缩文件
# 非关键字参数传递的数组会自动起名为arr_0, arr_1...
# load函数自动识别npz文件,并且返回一个类似于字典的对象,可以通过数组名作为关键字获取数组的内容
srcB = [[10, 11, 12, 13, 14], [15, 16, 17, 18, 19]]
srcC = [[20, 21, 22, 23, 24], [25, 26, 27, 28, 29]]
np.savez('aa', src, srcB, C=srcC)
aa = np.load("aa.npz")
print(aa['arr_0'])
print(aa['arr_1'])
print(aa['C']) # loadtxt 和 savetxt 可以读写1维和2维的数组
np.savetxt("b.txt", src) # 缺省按照'%.18e'格式保存数据,以空格分隔
b = np.loadtxt("b.txt") np.savetxt("b.txt", src, fmt='%d', delimiter=',') # 整型,以逗号分隔
b = np.loadtxt("b.txt", delimiter=',') # load时也要指定为逗号分隔

五、 矩阵操作

import numpy as np

a = np.array([[1, 2], [3, 4], [5, 6]])
b = np.array([[10, 20], [30, 40], [50, 60]]) c = np.vstack((a, b)) # [[1, 2], [3, 4], [5, 6], [10, 20], [30, 40], [50, 60]] 列数必须相同
d = np.hstack((a, b)) # [[1, 2, 10, 20], [3, 4, 30, 40], [5, 6, 50, 60]] 行数必须相同

Python:机器学习三剑客之 NumPy的更多相关文章

  1. python数据分析三剑客之: Numpy

    数据分析三剑客之: Numpy 一丶Numpy的使用 ​ numpy 是Python语言的一个扩展程序库,支持大维度的数组和矩阵运算.也支持针对数组运算提供大量的数学函数库 创建ndarray # 1 ...

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

    一.前述 NumPy(Numerical Python的缩写)是一个开源的Python科学计算库.使用NumPy,就可以很自然地使用数组和矩阵. NumPy包含很多实用的数学函数,涵盖线性代数运算.傅 ...

  3. 机器学习三剑客之Numpy库基本操作

    NumPy是Python语言的一个扩充程序库.支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库.Numpy内部解除了Python的PIL(全局解释器锁),运算效率极好,是大量机 ...

  4. Numpy 机器学习三剑客之Numpy

    NumPy是Python语言的一个扩充程序库.支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库.Numpy内部解除了Python的PIL(全局解释器锁),运算效率极好,是大量机 ...

  5. 机器学习三剑客之Numpy

      Numpy NumPy是Python语言的一个扩充程序库.支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库.Numpy内部解除了Python的PIL(全局解释器锁),运算效 ...

  6. python 机器学习三剑客 之 Matplotlib

    Matplotlib介绍: Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形 . 通过 Matplotlib,开发者可以仅需要几 ...

  7. 机器学习 三剑客 之 pandas + numpy

    机器学习 什么是机器学习? 机器学习是从数据中自动分析获得规律(模型),并利用规律对未知数据进行预测 机器学习存在的目的和价值领域? 领域: 医疗.航空.教育.物流.电商 等... 目的: 让机器学习 ...

  8. python机器学习包 Windows下 pip安装 scikit-learn numpy scipy

    1.到PIP的目录中C:\Python34\Scripts;2. 2.1  pip安装numpy pip install numpy 2.2  pip安装sklearn pip install -U ...

  9. Python 机器学习库 NumPy 教程

    0 Numpy简单介绍 Numpy是Python的一个科学计算的库,提供了矩阵运算的功能,其一般与Scipy.matplotlib一起使用.其实,list已经提供了类似于矩阵的表示形式,不过numpy ...

随机推荐

  1. MyBatis3系列__Demo地址

    一直光写博客了,并且感觉贴代码有点麻烦,但是以后的博客也尽量说的清楚,此外,觉得贴一下demo会好一些: 当然了,需要能够FQ哈,如果不能FQ的话建议百度或者参考这个:https://secure.s ...

  2. OI暑假集训游记

    莞中OI集训游记 Written BY Jum Leon. I        又是一载夏,本蒟蒻以特长生考入莞中,怀着忐忑的心情到了8月,是集训之际.怀着对算法学习的向往心情被大佬暴虐的一丝恐惧来到了 ...

  3. 关于VB里判断逻辑的说明

    如上图,当进行连续判断的时候,即使第一个已经不符合条件了,后面的依然会计算.这点一定要记住,除非你所有的函数都有必要执行,否则会导致效率降低. 减代码不一定能提高效率,对于IIF和连续判断写法,貌似很 ...

  4. java中的异常(二)

    异常的分类 在使用上 Error不用管他虚拟机错误 Exception必须要用catch抓 RuntimeExcption可以处理也可以不用处理 说明 Error:称为错误,由java虚拟机生成并抛出 ...

  5. Kubernetes中的RBAC

    Kubernetes中,授权有ABAC(基于属性的访问控制).RBAC(基于角色的访问控制).Webhook.Node.AlwaysDeny(一直拒绝)和AlwaysAllow(一直允许)这6种模式. ...

  6. vue开发(开发环境+项目搭建)

    Vue.js是一套构建用户界面的渐进式框架.与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计.Vue 的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整合.另一方面,Vu ...

  7. C# 异步编程之 Task 的使用

    (说明:随笔内容为学习task的笔记,资料来源:https://docs.microsoft.com/en-us/dotnet/api/system.threading.tasks.task?redi ...

  8. Java工作原理:JVM,内存回收及其他

    JAVA虚拟机系列文章 http://developer.51cto.com/art/201001/176550.htm Java语言引入了Java虚拟机,具有跨平台运行的功能,能够很好地适应各种We ...

  9. django介绍及路由系统

    第一:Python的web框架介绍 Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引 ...

  10. yarn的工作原理

    1.YARN 是什么? 从业界使用分布式系统的变化趋势和 hadoop 框架的长远发展来看,MapReduce的 JobTracker/TaskTracker 机制需要大规模的调整来修复它在可扩展性, ...