每个数据科学家都应该知道的20个NumPy操作
NumPy构成了数据科学领域中大部分Python库的基础。
关于数据科学的一切都始于数据,数据以各种形式出现。数字、图像、文本、x射线、声音和视频记录只是数据源的一些例子。无论数据采用何种格式,都需要将其转换为一组待分析的数字。因此,有效地存储和修改数字数组在数据科学中至关重要。
NumPy (Numerical Python)是一个科学计算包,它提供了许多创建和操作数字数组的方法。它构成了许多与数据科学相关的广泛使用的Python库的基础,比如panda和Matplotlib。
在这篇文章中,我将介绍20种常用的对NumPy数组的操作。这些操作可分为4个主要类别:
- 创建数组
- 操作数组
- 数组合并
- 带数组的线性代数
首先就是需要引入numpy的包
import numpy as np
创建数组
1.特定范围内的随机整数
第一个参数决定了范围的上限。下界默认为0,但我们也可以指定它。size参数用于指定所需的大小。
我们创建了一个由2到10之间的整数组成的3x2数组。
2. 0到1之间的随机浮点数
浮点数在0和1之间的一维数组。可以用于创建随机噪声数据。
3. 一个标准正态分布的样本
randn()用于从一个标准正态分布(即零均值和单位方差)创建一个样本。
我们创建了一个有100个浮点数的数组。
4. 1和0的矩阵
一个矩阵可以被认为是一个二维数组。我们可以用 np.zeros和np.ones构造一个0或1的矩阵
我们只需要确定矩阵的维数,就可以进行矩阵的创建。
5. 单位矩阵
单位矩阵是一个对角线为1,其他位置为0的方阵(nxn)。可以用Np.eye 或 np.identity来创建。
6. Arange
Arange函数用于在指定的时间间隔内创建具有均匀间隔顺序值的数组。我们可以指定起始值、停止值和步长。
默认的起始值是零,默认的步长是1。
7. 只有一个值的数组
我们可以使用np.full创建在每个位置具有相同值的数组。
我们需要指定要填充的大小和数字。此外,可以使用dtype参数更改数据类型。默认数据类型为整数。
操作数组
让我们首先创建一个二维数组:
8. 扁平化
Ravel函数使数组扁平化(即转换为一维数组)。
默认情况下,数组是通过逐行添加来扁平化的。通过将order参数设置为F (类fortran),可以将其更改为列。
9. 重塑
使用reshape函数,它会对数组进行重塑。A的形状是(3,4)大小是12。
可以指定每个维度上的大小,只要保证与原大小相同即可
我们不需要指定每个维度的大小。我们可以让NumPy通过-1来求维数。
10. 转置
矩阵的转置就是变换行和列。
11. Vsplit
将数组垂直分割为多个子数组。
我们将一个4x3的数组分成两个形状为2x3的子数组。
我们可以在分割后访问特定的子数组。
我们将一个6x3的数组分成3个子数组,得到第一个数组。
12. Hsplit
它与vsplit类似,但是水平工作的。
如果我们在一个6x3数组上应用hsplit得到3个子数组,得到的数组的形状将是(6,1)。
数组合并
在某些情况下,我们可能需要组合数组。NumPy提供了以多种不同方式组合数组的函数和方法。
13. 连接
这与pandas的合并的功能很相似。
我们可以使用重塑函数将这些数组转换为列向量,然后进行垂直连接。
14. Vstack
它用于垂直堆叠数组(行在彼此之上)。
它也适用于高维数组。
15. Hstack
类似于vstack,但是是水平工作的(按列排列)。
使用NumPy数组的线性代数(NumPy .linalg)
线性代数是数据科学领域的基础。NumPy作为使用最广泛的科学计算库,提供了大量的线性代数运算。
16. Det
返回一个矩阵的行列式。
矩阵必须是方阵(即行数等于列数)才能计算行列式。对于高维数组,最后两个维度必须是正方形。
17. Inv
计算矩阵的逆。
矩阵的逆矩阵是与原矩阵相乘得到单位矩阵的矩阵。不是每个矩阵都有逆矩阵。如果矩阵A有一个逆矩阵,则称为可逆或非奇异。
18. Eig
计算一个方阵的特征值和右特征向量。
19. 点积
计算两个向量的点积,这是关于它们的位置的元素的乘积的和。第一个向量的第一个元素乘以第二个向量的第一个元素,以此类推。
20. 矩阵相乘
Matmul 矩阵乘法。
我们已经讨论了NumPy的基本操作。在NumPy上有更高级的操作,但最好先理解基础操作。
感谢您的阅读。
作者 Soner Yıldırım
deephub翻译组
- Extjs4.2+webAPI+EF实现分页以及webapi的数据传值(续)
- Linux 系统安全与优化配置
- Extjs 项目中常用的小技巧,也许你用得着(2)
- 这或许是对小白最友好的python入门了吧——16,输入文本
- Extjs 项目中常用的小技巧,也许你用得着(1)
- Extjs4.2+webAPI+EF实现分页以及webapi的数据传值
- 【实践操作】 在iOS11中使用Core ML 和TensorFlow对手势进行智能识别
- 这或许是对小白最友好的python入门了吧——15,嵌套
- C#新功能--命名参数与可选参数
- 这或许是对小白最友好的python入门了吧——14,遍历字典
- C#新功能--命名参数
- Tomcat 安全配置与性能优化
- 【机器学习】伪标签(Pseudo-Labelling)的介绍:一种半监督机器学习技术
- 这或许是对小白最友好的python入门了吧——13,字典初识
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- keras分类之二分类实例(Cat and dog)
- 详解Python 循环嵌套
- PHP中quotemeta()函数的用法讲解
- 微信公众号实现扫码获取微信用户信息(网页授权)
- 实例说明js脚本语言和php脚本语言的区别
- 在Ubuntu 18.04上安装PHP 7.3 7.2和7.0的方法
- PHP7匿名类的用法示例
- laravel配置Redis多个库的实现方法
- PHP中Static(静态)关键字功能与用法实例分析
- 详解PHP 二维数组排序保持键名不变
- 详解PHP的抽象类和抽象方法以及接口总结
- keras的ImageDataGenerator和flow()的用法说明
- python 识别登录验证码图片功能的实现代码(完整代码)
- Laravel事件监听器用法实例分析
- iOS 性能优化实践:头条抖音如何实现 OOM 崩溃率下降50%+