Numpy数组与矩阵(三)

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))

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋刀鱼的知更鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值