Numpy数组与矩阵(三)
这里写目录标题
- Numpy数组与矩阵(三)
- 1 数组排序
- 1.1 sort函数
- 1.2 argsort函数
- 2 函数
- 2.1 字符串函数
- 2.2 数学函数
- 2.3 算术函数
- 2.4 统计函数
- 3 矩阵
- 3.1 空矩阵
- 3.2 零矩阵
- 3.3 全1矩阵
- 3.4 单位矩阵
- 3.5 对角矩阵
- 3.6 随机矩阵
Numpy数组与矩阵(三)
1 数组排序
1.1 sort函数
我们首先来看sort函数的语法结构,如下所示:
ndarray.sort(a, axis = -1, kind = 'quicksort', order = None)
参数说明如下:
- a:我们需要进行排序的数组;
- axis:沿着数组的方向进行排序,0按行,1按列;
- kind:选择排序的算法,提供了快速排序、混合排序和堆排序等;
- order:如果数组中包含了字段,则我们要进行排序的字段。
下面我们通过一个实例来说明sort函数的用法,代码如下:
import numpy as np
a = np.random.randn(6)
print("原始数组:\n", a)
print("经过排序的数组:")
a.sort()
print(a)
当然,我们还可以对多维数组中的每个维度的值进行排序,代码如下:
import numpy as np
b = np.random.randn(4, 5)
print("数组b是:")
print(b)
print("调用sort函数之后经过排序后的数组b:")
print(np.sort(b))
print("按列排序后的数组b:")
print(np.sort(b, axis = 0))
1.2 argsort函数
argsort函数返回的是数组从大到小的索引值,argsort的语法结构和参数说明与sort函数是一致的,它的作用想过是对数组进行排序,返回的是一个排序后的索引,示例如下:
import numpy as np
a =- np.array([2, -1, 5, 7, -9, 4])
a.argsort()
当然,对于二维数组,argsort函数依然适用:
import numpy as np
a = np.array([[ 1, 5, 3], [ 2, 8, 5], [ 3, 6, 0]])
print('原始数组a是:\n', a)
print('调用argsort函数之后的数组a:')
print(np.argsort(a))
print('按照列进行排序后的数组a:')
print(np.argsort(a, axis = 0))
2 函数
2.1 字符串函数
以下的函数可用于数据类型为string _或unicode _的数组执行向量化字符串操作,是基于Python内置库中的标准字符串函数,具体函数介绍如下表。
函数名 | 函数描述 |
---|---|
add | 对两个数组的逐个字符串元素进行连接 |
multiply | 返回元素多重连接后的字符串 |
center | 居中字符串 |
capitalize | 将字符串的第一个字母转换为大写 |
title | 将字符串的每个单词的第一个字母转换为大写 |
lower | 数组元素转换为小写 |
upper | 数组元素转换为大写 |
split | 指定分隔符对字符串进行分割,并返回数组列表 |
splitlines | 返回元素中的行元素,用换行符给分割 |
strip | 移除元素开头或者结尾处的特定字符 |
join | 通过指定分隔符来连接数组中的元素 |
replace | 使用新字符串替换字符串中的所有子字符串 |
decode | 数组元素依次调用str.decode |
encode | 数组元素依次调用str.encode |
我们将会介绍几种比较乘用的字符串函数,首先是numpy.char.add函数的使用,它的功能是依次对两个数组的元素进行字符串连接,实例如下:
import numpy as np
print('连接实例一:')
print(np.char.add(['Hello'], ['Numpy']))
print('连接实例二:')
print(np.char.add(['A', 'a'], ['B', 'b']))
接下来是numpy.char.capitalize函数,它的功能是将字符串的第一个字母转换为大写(数组中有多个元素时,将每个元素的首字母进行大写操作),示例如下:
import numpy as np
print(np.char.capitalize(['sober', 'cool']))
接下来将会介绍upper函数,它的功能是将元素的每个字母都大写,对每个元素调用的是str.upper,示例如下:
import numpy as np
print(np.char.upper(['numpy', 'pandas']))
print(np.char.upper('scipy'))
2.2 数学函数
Numpy中有许多大量的数学运算相关的函数,包括三角函数、算数运算函数、复数处理函数等。以下将会对相关函数进行举例说明。
函数 | 函数功能说明 |
---|---|
abs, fabs | 局绝对值 |
sqrt | 开方 |
square | 平方 |
exp | 指数 |
log, log10, log2, loglp | 对数 |
sign | 符号函数 |
ceil | 计算每个元素的上限整数,即大于或等于这个数的最小整数 |
floor | 计算每股元素的下限整数,即小于或等于这个数的最大整数 |
isnan | 返回布尔数组,指示每个元素值是否为NAN(不是数字) |
isdinite, isinf | 返回布尔阵列,指示每个元素是否有限(非负无穷,非空)或无限 |
cos, sin, tan, cosh, sinh, tanh | 三角函数 |
arcsin, arccos, arctan, arcsinh, arccosh, arctanh | 反三角函数 |
下面的例子我们将演示计算数组的开方、平方、指数函数等运算,如下所示:
import numpy as np
a = np.arange(5)
b = np.sqrt(a)
c = np.exp(a)
d = np.square(a)
print('数组a:\n', a)
print('数组a的开方:\n', b)
print('数组a的指数函数:\n', c)
print('数组a的平方:\n', d)
Numpy中还提供了不少的标准三角函数,像sin、cos、tan等,这样我们就可以房子包的使用三角函数来进行运算,示例如下:
import numpy as np
a = np.array([0, 30, 45, 60, 90, 180])
b = np.sin(a*np.pi/180)
c = np.cos(a*np.pi/180)
d = np.tan(a*np.pi/180)
print('数组a:\n', a)
print('数组中角度的正弦值:\n', b)
print('数组中角度的余弦值:\n', c)
print('数组中角度的正切值:\n', d)
2.3 算术函数
Numpy算术函数包含简单的加减乘除以及其他较为浮躁的算术函数,小表给出乘用的算术函数列表。我们在利用函数对数组进行计算的时候,需要注意数组必须具有相同的形状或者符合数组广播规则。
函数 | 函数功能说明 |
---|---|
add | 加 |
subtract | 减 |
multiply | 乘 |
divide,floor_divide | 除 |
power | 将第一个数组中的元素提升到第二个数组中指定的幂 |
maximum,fmax | 最大值 |
minimum,fmin | 最小值 |
mod | 除法余数 |
copysign | 将第二个参数中值的符号复制到第一个参数值的值 |
greater,greater_equal,less,loss_equal,equal,not_equal | 执行元素比较,生成布尔数组(相当于插入操作符>,>=,<,<=,==,!=) |
logical_and,logical_or,logical_xor | 计算逻辑运算的元素真值(等价于运算符&、|、^) |
实例说明:
import numpy as np
a = np.arange(25, dtype = np.float_).reshape(5, 5)
b = np.array([1, 2, 3, 4, 5])
c = np.add(a, b)
d = np.subtract(a, b)
e = np.multiply(a, b)
f = np.divide(a, b)
print('数组a:\n', a)
print('数组b:\n', b)
print('a and b with add:\n', c)
print('a and b with subtract:\n', d)
print('a and b with multiply:\n', e)
print('a and b with divide:\n', f)
2.4 统计函数
Numpy提供了众多的统计类函数,用于从数组中查找最小元素、最大元素、百分位标准差和方差等,下面给出数据分析中常见的统计函数。
函数 | 函数功能说明 |
---|---|
amin | 用来计算数组中的元素眼指定轴的最小值 |
amax | 用来计算数组中的元素眼指定轴的最大值 |
ptp | 用于计算数组中元素的最大值与最小值之差 |
percentile | 用于计算数组中的百分位数 |
median | 用于计算数组中元素的中位数 |
mean | 用于计算数组中元素的算术平均值 |
average | 根据在另一个数组中给出的格子的权重计算数组中元素的加权平均值 |
std | 用于计算数组中元素的标准差 |
var | 用于计算数组中元素的方差 |
我们首先介绍数组的最小值、最大值的计算函数amin和amax的用法:
import numpy as np a = np.array([[1, 4, 7, 3], [5, 6, 14, 33], [12, 4, 21, 9]]) print('数组a:\n', a) print('调用amin()函数计算最小值(axis = 1):\n', np.amin(a, 1)) print('调用amin()函数计算最小值(axis = 0):\n', np.amin(a, 0)) print('调用amin()函数计算最大值(axis = 1):\n', np.amax(a, 1)) print('调用amin()函数计算最大值(axis = 0):\n', np.amax(a, 0)) print('调用amin()函数计算最小值:\n', np.amin(a)) print('调用amin()函数计算最大值:\n', np.amax(a))
下面是ptp函数的示例说明:
import numpy as np a = np.array([[1, 4, 7, 3], [5, 6, 14, 33], [12, 4, 21, 9]]) print('数组a:\n', a) print('调用ptp()函数计算的极差:\n', np.ptp(a)) print('沿轴0调用ptp()函数计算的极差:\n', np.ptp(a, 0)) print('沿轴1调用ptp()函数计算的极差:\n', np.ptp(a, 1))
百分位数十数据分析统计中经常使用的度量方式,它的语法结构如下所示:
numpy.percentile(a, q, axis)
参数说明如下:
- a:输入数组;
- q:需要计算的百分位数,在0~100之间;
- axis:沿着该轴计算百分位数。
第P个百分位数是这样的值,它使得至少有p%的数据项小于或等于这个值,且至少有(100-p)% 的数据项大于或者等于这个值,示例如下:
import numpy as np a = np.array([[1, 4, 7, 3], [5, 6, 14, 33], [12, 4, 21, 9]]) print('数组a:\n', a) print('调用oercentile()函数(aixs= = 0, q = 10):\n', np.percentile(a, 10,axis = 0)) print('调用oercentile()函数(aixs= = 0, q = 50):\n', np.percentile(a, 50,axis = 0)) print('调用oercentile()函数(aixs= = 1, q = 50):\n', np.percentile(a, 50,axis = 1)) print('调用oercentile()函数(aixs= = 1, keepdims = True):\n', np.percentile(a, 10,axis = 0))
3 矩阵
Numpy中包含了一个矩阵库nmupy.matlib,这个模块的函数返回的是一个矩阵,而不是ndarray对象。
3.1 空矩阵
Numpy中的matlib.empty函数可以创建一个空矩阵,语法结构如下:
numpy.matlib.enpty(shape, dtype, order)
参数说明:
- shape:定义矩阵形状的整数或者是整数数组;
- dtype:定义矩阵的数据类型;
- order:C(行序优先)或者F(列序优先)。
以下实例是说明该如何创建空矩阵的:
import numpy as np
import numpy.matlib
a = np.matlib.empty((3, 3))
b = np.matlib.empty(3)
print('定义一个3*3的空矩阵:\n', a)
print('定义一个一维空矩阵:\n', b)
3.2 零矩阵
Numpy中的matlib.zeros函数可以创建一个用0来填充元素值的矩阵,下面是实例:
import numpy as np
import numpy.matlib
print(np.matlib.zeros((3, 3)))
3.3 全1矩阵
Numpy中的matlib.ones函数可以创建元素值都为1的矩阵,具体示例如下:
import numpy as np
import numpy.matlib
print(np.matlib.ones((3, 4)))
3.4 单位矩阵
单位矩阵是一个方阵,从左上角到右下角的对角线(我们称之为主对角线)上的元素均为1,除此之外的元素值都是0,Numpy中的matlib。identity函数就是返回指定大小的单位矩阵。
import numpy as np
import numpy.matlib
print(np.matlib.identity((5)))
3.5 对角矩阵
Numpy中的matlib.eye函数可以返回这样的一个矩阵,它的对角线元素都为1,其余位置的元素值都是0,语法结构如下:
numpy.matlib.eye(n, M, k, dtype)
参数说明:
- n:返回矩阵的行数;
- M:返回矩阵的列数,默认为n;
- k:对角线的索引;
- dtype:数据类型。
示例如下:
import numpy as np
import numpy.matlib
print(np.matlib.eye(n = 4, M = 7, k = 0, dtype = int))
3.6 随机矩阵
Numpy中的matlib.rand函数创建了一个给定大小的矩阵,数据是随机填充的,每次都不一样,具体形式如下举例:
import numpy as np
import numpy.matlib
print(np.matlib.rand(5, 6))
Numpy数组与矩阵(三)相关推荐
- numpy 数组、矩阵乘法运算
为了区分三种乘法运算的规则,具体分析如下: import numpy as np 1. np.multiply()函数 函数作用 数组和矩阵对应位置相乘,输出与相乘数组/矩阵的大小一致 1.1数组场景 ...
- python numpy array转置_详解Numpy数组转置的三种方法T、transpose、swapaxes
Numpy是高性能科学计算和数据分析的基础包,里面包含了许多对数组进行快速运算的标准数学函数,掌握这些方法,能摆脱数据处理时的循环. 1.首先数组转置(T) 创建二维数组data如下: 进行矩阵运算时 ...
- numpy 数组和矩阵的乘法
1. 当为array的时候,默认d*f就是对应元素的乘积,multiply也是对应元素的乘积,dot(d,f)会转化为矩阵的乘积, dot点乘意味着相加,而multiply只是对应元素相乘,不相加 2 ...
- numpy 数组与矩阵的乘法理解
1. 当为array的时候,默认d*f就是对应元素的乘积,multiply也是对应元素的乘积,dot(d,f)会转化为矩阵的乘积, dot点乘意味着相加,而multiply只是对应元素相乘,不相加 2 ...
- numpy 数组和矩阵的乘法的理解
1. 当为array的时候,默认d*f就是对应元素的乘积,multiply也是对应元素的乘积,dot(d,f)会转化为矩阵的乘积, dot点乘意味着相加,而multiply只是对应元素相乘,不相加 2 ...
- [云炬python3玩转机器学习笔记] 3-4创建Numpy数组和矩阵
其他创建 numpy.array的方法 np.zeros(10) array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]) np.zeros(10).dtype ...
- python numpy常用操作、Numpy 多维数组、矩阵相乘、矩阵乘以向量
python numpy常用操作 Numpy基本操作 # 导入numpy import numpy as np # 生成numpy数组 x = np.array([1.0, 2.0, 3.0]) pr ...
- Numpy生成0矩阵、1矩阵、单位矩阵以及创建等差数组和等比数列
文章目录 一.0矩阵 二.1矩阵 三.单位矩阵 四.深拷贝和浅拷贝 五.创建等差数组 - 指定数量 六.创建等差数组 - 指定步长 七.创建等比数列 一.0矩阵 np.ones(shape, dtyp ...
- python三维矩阵可视化_科学计算三维可视化---Mlab基础(基于Numpy数组的绘图函数)...
Mlab了解 Mlab是Mayavi提供的面向脚本的api,他可以实现快速的三维可视化,Mayavi可以通过Mlab的绘图函数对Numpy数组建立可视化. 过程为: .建立数据源 .使用Filter( ...
最新文章
- redis java 性能_Redis 性能优化
- 《Abaqus GUI程序开发指南(Python语言)》——第一章 概述1.1 简单插件实例——创建带孔板有限元模型...
- Spark入门(八)之WordCount
- [转载] 整理下java中stringBuilder和stringBuffer两个类的区别
- 【高清截图】UbuntuKylin 14.04 桌面版安装步骤
- 修改docx表格_实例29_在Word表格中将上下行相同内容的单元格自动合并
- ionic iphone下的问题
- android 日历 时间选择,Android--DatePicker和TimePicker(日历选择器与时间选择器)
- VSCode尝试在目标目录创建文件发生错误
- 为什么python不能输入中文_一条命令解决mac版本python IDLE不能输入中文问题
- DataGrip连接不上本地localhost数据库解决办法
- matlab电磁场与微波技术仿真pdf,MATLAB电磁场与微波技术仿真
- 计算机技能高考带什么文具,高考必备——21条考场抓分细节
- Mac苹果电脑怎么调整磁盘区域的大小
- 稻盛和夫「活法」| 读书笔记系列01
- 3343:热血格斗场
- 如何从零开始写一个操作系统?
- Largest prime factor
- 为什么我们对工作缺乏责任心
- js找出两个数组中不同的元素
热门文章
- lenovo thinkpad t460s trackpiont小红点移动速度调整
- xt6使用技巧_凯迪拉克XT6中控屏幕功能使用操作图解
- uniapp商城前端源码下载/uniapp多店铺PHP商城源码下载
- Nextcloud集成Active Directory(AD)LDAP用户身份验证
- 天龙八部哪个服务器里面人数最多的,天龙八部怀旧服:不删档各大门派人数出来了!你猜哪个门派人多?...
- (27)STM32——光敏传感器实验笔记
- LOJ#3084. 「GXOI / GZOI2019」宝牌一大堆(递推)
- java base64 转图片不现实_BASE64编码的图片在网页中的显示问题的解决
- 数据库入门级学习(4)
- 华为路由器时间同步_华为NTP配置实例