欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Numpy基础(二)

程序员文章站 2022-05-28 19:38:34
...

Numpy作为科学计算的基础包,那就理所应当的有计算方面的优势,今天就来吧啦一下Numpy的计算

算数运算符

数组的第一类运算是使用算术运算符进行的运算。最显而易见的就是数组加上或者乘以一个标量

In [1]: import numpy as np

In [2]: a = np.arange(4)

In [3]: a
Out[3]: array([0, 1, 2, 3])

In [4]: a+4
Out[4]: array([4, 5, 6, 7])

In [5]: a * 2
Out[5]: array([0, 2, 4, 6])

在Numpy中,这些运算称为元素级。也就是说,它们只用于位置相同的元素之间,所得到的运算结果组成一个新的数组。运算结果在新的数组中的位置跟操作数位置相同(如下图)

Numpy基础(二)

对于多维数组,这些运算符还是元素级

In [6]: A = np.arange(0,9).reshape(3,3)

In [7]: A
Out[7]:
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])

In [8]: B = np.ones((3,3))

In [9]: A * B
Out[9]:
array([[0., 1., 2.],
       [3., 4., 5.],
       [6., 7., 8.]])

矩阵积

选择使用*号作为元素级运算符是Numpy库比较奇怪的一点。事实上,在很多的其他数据分析工具中,*在用于两个矩阵之间的运算时指的是矩阵积。而Numpy用dot()函数表示这类乘法,注意,它不是元素级的

In [10]: np.dot(A,B)
Out[10]:
array([[ 3.,  3.,  3.],
       [12., 12., 12.],
       [21., 21., 21.]])

所得到的数组每一个元素为,第一个矩阵中与钙元素行号相同的元素与第二个矩阵中与该元素列号相同的元素,两两相乘后求和。

Numpy基础(二)

由于矩阵运算不遵循交换律,所以一定要注意运算对象的顺序。A*B确实不等于B*A

In [11]: B.dot(A)
Out[11]:
array([[ 9., 12., 15.],
       [ 9., 12., 15.],
       [ 9., 12., 15.]])

通用函数

通用函数通常叫做ufunc,它对数组中的各个元素逐一进行操作。这表示,通用函数分别处理数组的每一元素,生成的结果组成一个新的输出数组。输出数组的大小跟输入数组相同

常见函数列表:

函数 说明
abs 计算绝对值
sqrt 平方根
sin 三角函数sin值
log 对数函数

例如:

In [13]: a
Out[13]: array([1, 2, 3, 4])

In [14]: np.sqrt(a)
Out[14]: array([1., 1.41421356, 1.73205081, 2. ])

In [15]: np.log(a)
Out[15]: array([0. , 0.69314718, 1.09861229, 1.38629436])

In [16]: np.sin(a)
Out[16]: array([ 0.84147098,  0.90929743,  0.14112001, -0.7568025 ])

聚合函数

聚合函数是指对一组值进行操作,返回一个单一值作为结果的函数。

方法 说明
sum 求和
mean 算术平均数
std 标准差
var 方差
max,min 最大、最小值
argmin,argmax 最小元素、最大元素的索引
cumsum 所有元素的累积和
cumprod 所有元素的累积积

例如:

In [17]: arr = np.random.randn(5,4) #正态分布的数据

In [18]: arr.mean()
Out[18]: 0.43615453064415943

In [19]: np.mean(arr)
Out[19]: 0.43615453064415943

In [20]: arr.sum()
Out[20]: 8.723090612883189

排序

跟python内置的列表类型一样,Numpy数组也可以通过sort()方法进行就地排序

In [21]: arr = np.random.randint(0,8,5)

In [22]: arr
Out[22]: array([7, 6, 0, 0, 5])

In [23]: arr.sort()

In [24]: arr
Out[24]: array([0, 0, 5, 6, 7])

唯一化和其他集合逻辑

Numpy提供了一些针对一维ndarray的基本集合运算。最常用的可能要输np.unique了,它用于找出数组中唯一值并返回已排序的结果

In [25]:names = np.array(['Bob','Joe','Will','Bob','Will','Joe','Joe'])

In [26]:np.unique(names)
Out[26]:array(['Bob', 'Joe', 'Will'], dtype='<U4')

另一个函数np.in1d用于测试一个数组中的值是否在另一个数组中,返回一个布尔型数组

In [27]:values = np.array([6,0,0,3,2,5,8])
In [28]:np.in1d(values,[2,3,6])
Out[28]:
array([ True, False, False,  True,  True, False, False])

最后

以上就是今天关于Numpy的分享,主要就是一些运算函数的介绍和使用,你记住了多少了呢。下面放上思维导图,一起来回忆一下
Numpy基础(二)

相关标签: Numpy