数组的运算

数组的运算

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

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

你可能感兴趣的:(数据分析,数据结构,numpy,数据分析)