一、数学运算
1、数组内元素四则运算
x1 = np.array([1.0, 2.0, 3.0])
x2 = np.array([2.3, 5.1, 6.4])
#逐元素求和
print(x1+x2) #[3.3 7.1 9.4]
print(np.add(x1,x2)) #[3.3 7.1 9.4]
#逐元素作差
print(x1-x2) #[-1.3 -3.1 -3.4]
print(np.subtract(x1,x2)) # 同上
#逐元素求积
print(x1*x2) #[ 2.3 10.2 19.2]
print(np.multiply(x1,x2)) # 同上
#逐元素求商
print(x1/x2) #[0.43478261 0.39215686 0.46875 ]
print(np.divide(x1,x2)) # 同上
2、矩阵乘法
x1 = np.arange(16).reshape(2,2,4) #定义一个三维数组
x2 = np.arange(8).reshape(4,2)
#三者都产生相同的结果,即一个2*2*2的矩阵
print(x1.dot(x2))
print(np.dot(x1,x2)) #与x1.dot(x2)等价
print(np.matmul(x1,x2))
4、矩阵内元素求和,求平均,累计和,累计积
x = np.arange(8).reshape(2,-1)
print(x)
print(np.sum(x)) #全元素求和
print(np.sum(x,axis= 0)) #按列求和
print(np.sum(x, axis= 1)) #按行求和
print(np.mean(x)) #全元素求平均,同理可按行按列求平均
print(np.cumsum(x, axis=0)) #按列累和
print(np.cumprod(x, axis=0)) #按列累积
[[0 1 2 3]
[4 5 6 7]]
28
[ 4 6 8 10]
[ 6 22]
3.5
[[ 0 1 2 3]
[ 4 6 8 10]]
[[ 0 1 2 3]
[ 0 5 12 21]]
二、矩阵转置
1、二维数组转置
x = np.array([[1.0, 2.0, 3.0],[4.0, 5.0, 6.0]])
print(x)
#转置
print(x.T)
[[1. 2. 3.]
[4. 5. 6.]]
[[1. 4.]
[2. 5.]
[3. 6.]]
2、高维数组转置
x = np.arange(16).reshape(2,4,2) #定义一个三维数组
print(x.reshape(2, 2, 4)) #重定义x的维度
print(x.swapaxes(1, 2)) #交换第1维和第2维的维度
print(x.transpose((0,2,1))) #相当于x.swapaxes(1, 2)
3、高维数组拉平——revel()
x = np.arange(8).reshape(2,-1)
print(x)
print(x.ravel())
[[0 1 2 3]
[4 5 6 7]]
[0 1 2 3 4 5 6 7]
三、元素排序
x = np.array([2, 6, 7, 11, 9])
print(x)
print(np.argsort(x)) #升序排列后的索引值
print(np.sort(x)) #升序排列
print(np.sort(x)[::-1]) #降序排列
[ 2 6 7 11 9]
[0 1 2 4 3]
[ 2 6 7 9 11]
[11 9 7 6 2]
四、按条件修改数组的值——where()
x = np.random.randn(3,3)
print(x)
print(np.where(x>1, 2, x)) #将数组中大于1的值改为2
print(np.where(x>0, 1, -1)) #将数组中大于0的值改为1,否则为-1
[[ 0.31014152 0.22120668 1.01928267]
[ 0.71775757 -0.32284624 -0.47999995]
[-0.33152716 -0.93103397 0.19264235]]
[[ 0.31014152 0.22120668 2. ]
[ 0.71775757 -0.32284624 -0.47999995]
[-0.33152716 -0.93103397 0.19264235]]
[[ 1 1 1]
[ 1 -1 -1]
[-1 -1 1]]