数组的运算:对应元素的运算,结构完全相同
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]]
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]
# 逻辑与运算:all(布尔数组) 全为True才为True
np.all(mask) # False
# 逻辑或运算:any(布尔数组) 有True就为True
np.any(mask)
True
将行向量(或列向量)和二维数组每行(或每列)进行运算
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]]
sort 会修改原数组,没有返回值
# sort 会修改原数组,没有返回值
arr12 = np.array([21,10,20,8,15,1])
# arr12.sort()
# print(arr12) # [ 1 8 10 15 20 21]
进行排序,有返回值,返回值对应为元素在排序前的索引
# 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
# 参数说明
# axis : 指定对应的轴进行排序 默认是axis=-1 是最后一个轴进行排序
# kind: 是排序的使用的方法
arr13 = np.array([[12,2,3,45,4],[12,34,345,567,56]])
# arr13.sort(axis=0)
# int(arr13)
# argsort 有返回值,返回值为排序前的索引
print(arr13.argsort())
[[1 2 4 0 3]
[0 1 4 2 3]]