数组的运算

数组的运算

数组的运算:对应元素的运算,结构完全相同

(1) 四则运算:+ - * / ** %

import numpy as np

arr1 = np.arange(1,17).reshape((4,4))
# print(arr1)
arr2 = np.diag([2,3,1,5])  # 创建一个对角数组
# print(arr2)
arr3 = arr1 * arr2  # 乘法
# print(arr3)
arr4 = arr2 / arr1  # 除法  被除数不能为0
# print(arr4)
arr5 = arr1**arr2  # 幂运算  后一个数组为前一个数组的指数
# print(arr5)
arr6 = arr2%arr1  # 取余
# print(arr6)
[[0 0 0 0]
 [0 3 0 0]
 [0 0 1 0]
 [0 0 0 5]]

(2) 比较运算 < > <= >= != ==

print(arr1 > arr2)  # 对应元素的比较,成立为True,不成立为False
[[False  True  True  True]
 [ True  True  True  True]
 [ True  True  True  True]
 [ True  True  True  True]]
# 将 arr1中大于8的值取出
mask = arr1 >8
print(mask)
print(arr1[mask]) # 可以使用相同结构的mask对数组进行取值
[[False False False False]
 [False False False False]
 [ True  True  True  True]
 [ True  True  True  True]]
[0 0 1 0 0 0 0 5]

(3) 逻辑运算 逻辑与和逻辑或运算

# 逻辑与运算:all(布尔数组)  全为True才为True
np.all(mask)  # False
# 逻辑或运算:any(布尔数组)  有True就为True
np.any(mask)
True

(4) 数组广播运算

将行向量(或列向量)和二维数组每行(或每列)进行运算

arr7 = np.array([[1],[0],[1],[0]])  # 列向量
arr8 = np.array([1,0,1,0])  # 行向量
arr9 = arr1+arr7  # 二维数组和类向量进行运算
arr10 = arr1+arr8  # 二维数组和行向量进行运算
arr11 = arr1+np.array([1])  # 二维和单个数的数组也能进行广播
# print(arr11)
[[ 2  3  4  5]
 [ 6  7  8  9]
 [10 11 12 13]
 [14 15 16 17]]

(5) 特殊方法

一维数组的排序

sort:

sort 会修改原数组,没有返回值

# sort 会修改原数组,没有返回值
arr12 = np.array([21,10,20,8,15,1])
# arr12.sort()
# print(arr12)  # [ 1  8 10 15 20 21]

argsort:

进行排序,有返回值,返回值对应为元素在排序前的索引

# argsort  进行排序,有返回值,返回值对应为元素在排序前的索引

print(arr12.argsort())  # [5 3 1 4 2 0]对应元素在排序前的索引
print(arr12)
[5 3 1 4 2 0]
[21 10 20  8 15  1]

二维数组的排序:

sort:
# 二维数组的排序 sort 
# 参数说明
# axis : 指定对应的轴进行排序 默认是axis=-1 是最后一个轴进行排序
# kind: 是排序的使用的方法
arr13 = np.array([[12,2,3,45,4],[12,34,345,567,56]])
# arr13.sort(axis=0)
# int(arr13)

argsort:
# argsort 有返回值,返回值为排序前的索引
print(arr13.argsort())
[[1 2 4 0 3]
 [0 1 4 2 3]]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值