0. 回顾:
在之前我们学习了numpy的核心ndarray(N维数组)的一些基本概念和如何生成ndarray,在这篇博客中,将学习其基本操作。
1. 基本操作
1.1 算术运算符
利用算术运算符进行运算最重要的一点是元素级运算,即指在数组的对应位置上逐个元素进行操作,而不是对整个数组进行整体操作,这和后面的矩阵积有所区别。
示例1:数组加一个数和乘一个数。
import numpy as np
a = np.arange(0, 5)
print(a)
print(a+4)
print(a*4)
运行结果为:
[0 1 2 3 4]
[4 5 6 7 8]
[ 0 4 8 12 16]
示例2:两个数组的运算。
import numpy as np
a = np.arange(0, 5)
b = np.arange(1, 6)
print(a, b)
print(a+b)
print(a*b)
运行结果为:
[0 1 2 3 4] [1 2 3 4 5]
[1 3 5 7 9]
[ 0 2 6 12 20]
可以看到,是先对两个数组的每一个对应的元素进行运算之后,在合并为一个数组。
1.2 矩阵积
矩阵积即为两个矩阵的乘积,此时,不再是元素级的,numpy是用matmul()函数表示。
示例3:两个数组的矩阵积。
import numpy as np
A = np.arange(0, 4).reshape(2, 2)
B = np.arange(1, 5).reshape(2, 2)
C = np.matmul(A, B)
print(A)
print(B)
print(C)
运行结果为:
[[0 1]
[2 3]]
[[1 2]
[3 4]]
[[ 3 4]
[11 16]]
可以看到,此时是真正的矩阵和矩阵之间的乘法,而不是点积【点积:两个数组对应位置的元素相乘,然后求和。对于一维数组(向量),点积计算的是两个向量的内积】。
1.3 自增和自减运算符
在Python中利用+=和-=进行自增和自减,运算之后的结果还是赋值给参与运算的数组本身。
示例4:
import numpy as np
A = np.arange(0, 4).reshape(2, 2)
B = np.arange(1, 5).reshape(2, 2)
print(A)
print(B)
A += 1
B -= 1
print(A)
print(B)
运行结果为:
[[0 1]
[2 3]]
[[1 2]
[3 4]]
[[1 2]
[3 4]]
[[0 1]
[2 3]]
1.4 通用函数
它对数组的每个元素分别进行操作,生成一个新的数组。
示例5:
import numpy as np
c = np.arange(1, 6)
print(c)
print(np.sqrt(c))
print(np.log(c))
print(np.sin(c))
运行结果为:
[1 2 3 4 5]
[1. 1.41421356 1.73205081 2. 2.23606798]
[0. 0.69314718 1.09861229 1.38629436 1.60943791]
[ 0.84147098 0.90929743 0.14112001 -0.7568025 -0.95892427]
1.5 聚合函数
它是对整个数组进行操作,返回一个单一值。
示例6:
import numpy as np
c = np.arange(1, 6)
print(c)
print(np.max(c))
print(np.sum(c))
print(np.std(c))
运行结果为:
[1 2 3 4 5]
5
15
1.4142135623730951