Python | Numpy | 数学运算,转置,排序,条件查询

一、数学运算

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










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值