数组运算
import numpy as np # 创建两个数组 data_0 = np.array([[1,2,3],[4,5,6]]) data_1 = np.array([[5,6,7],[7,8,9]]) # 将两个数组进行相加 data_0 + data_1
输出结果为:
array([[ 6, 8, 10], [11, 13, 15]])
数组相减,乘,除 与数组相加差不多,都是对应元素进行相加,乘,除。
数组与数的计算
# 前面已经加载了numpy这个包,这里就不继续加载了 data_0 = np.array([[1,2,3],[4,5,6]]) # 数组与数相加 6 + data_0 #-------------------------下面是输出结果--------------------------- array([[ 7, 8, 9], [10, 11, 12]])
下面为数组与数的减法运算:
print(6 - data_0) print(data_0 - 6) # -------------------------下面是输出结果-------------------------- [[5 4 3] [2 1 0]] -------------- [[-5 -4 -3] [-2 -1 0]]
数组与数的乘法运算和数组与数的加法运算是一样的
数组与数的减法运算和数组与数的除法运算是一样的
数组的切片和索引
一维数组的切片和索引
arr = np.arange(9) print(arr) # 下面为数组的索引方式: # 索引下标为6的元素 print(arr[6]) # 索引下标从3到6的元素,此为左闭右开区间 print(arr[3:6]) # 以步长为3索引下标从1到8的元素,此区间为左闭右开 print(arr[1:8:3]) # -------------------------下面是输出结果--------------------------- array([0, 1, 2, 3, 4, 5, 6, 7, 8]) ----------------------------------- 6 ----------------------------------- array([3, 4, 5]) ----------------------------------- array([1, 4, 7])
多维数组的切片和索引(可以想象成成矩阵)
arrs = np.array([[1,2,3],[4,5,6],[7,8,9]]) print(arrs) # 打印数组下标为1的元素(小数组) print(arrs[1]) # 打印横坐标为2,纵坐标为2的元素 print(arrs[2,2]) # 打印第二列的元素 print(arrs[:,2]) # 打印第0行和第1行的元素 print(arrs[:2]) # 打印第0行和第1行 与 第0列和第1列元素 相交 的元素 print(arrs[0:2,0:2]) # 打印第一行里面元素的纵坐标为0和1的元素 print(arrs[1,:2]) # ----------------------------下面是输出结果----------------------------- array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) ---------------------- array([4, 5, 6]) ---------------------- 9 ---------------------- array([3, 6, 9]) ---------------------- array([[1, 2, 3], [4, 5, 6]]) ---------------------- array([[1, 2], [4, 5]]) ---------------------- array([4, 5])
[2: :2] 从下标为2到最后,步长为2
花式数组
# 先创建一个空数组,并给这个数组分配好了空间 arrss = np.empty((4,4)) # 进行for循环 for i in range(4): # 利用循环给数组增添元素,这里arange也是左闭右开区间 arrss[i] = np.arange(i,i+4) # arange返回的是数组 arrss # 打印第一行和第三行的元素 print(arrss[[1,3]]) # 打印横坐标为1,纵坐标为3的元素 和 横坐标为3,纵坐标为3的元素 print(arrss[[1,3],[3,3]]) # --------------------------下面是输出结果------------------------- array([[0., 1., 2., 3.], [1., 2., 3., 4.], [2., 3., 4., 5.], [3., 4., 5., 6.]]) ---------------------------- array([[1., 2., 3., 4.], [3., 4., 5., 6.]]) ---------------------------- array([4., 6.])
布尔型索引的使用
name = np.array(['Jack','Tom','Lily','Rose']) print(name) numbers = np.array([[1,2,3,4],[3,4,5,6],[5,6,7,8],[7,8,9,10]]) print(numbers) # 判断是否为Jack,其输出结果为布尔值 print(name=='Jack')z # 相当于number[ True, False, False, False],即输出那个为True的值 print(numbers[name=='Jack']) # 在为True的那一行找纵坐标为1的值 print(numbers[name=='Jack',:1]) # ----------------------------下面是输出结果--------------------------- array(['Jack', 'Tom', 'Lily', 'Rose'], dtype='<U4') ----------------------------------------------------- array([[ 1, 2, 3, 4], [ 3, 4, 5, 6], [ 5, 6, 7, 8], [ 7, 8, 9, 10]]) ----------------------------------------------------- array([ True, False, False, False]) ----------------------------------------------------- array([[1, 2, 3, 4]]) ----------------------------------------------------- array([[1]])
这种情况 也可以和正太分布相结合
数组的转置
arr_0 = np.arange(16).reshape(4,4) arr_0 # 数组的转置 arr_0.T。 # 里面可以加参数 arr_0.transpose(1,2,0) 默认是arr_0.transpose(0,1,2),即表示轴的交换。没加参数默认为数组转置。 # arr_0.transpose() # # 0轴和1轴进行交换 arr_0.swapaxes(1,0)
常见一元通用函数
函数 | 描述 |
---|---|
sqrt | 计算平方根 np.sqrt(数组名) |
square | 计算各元素平方 np.square(数组名) |
abs,fabs | 计算整数,浮点数或者复数的绝对值 np.abs(数组名) |
ceil | 向上取整 np.ceil() |
floor | 向下取整 np.floor |
rint | 四舍五入到最接近的整数 np.rint( ) |
isnan | 返回 “哪些元素是空” 的布尔类型数组 np.isnan() |
isfinite,isinf | 返回哪些是有穷,哪些是无穷的布尔类型数组 |
arcos,arccosh,arcsin | 三角函数 |
add | 将数组中对应元素相加 np.add(数组1,数组2) |
subtract | 数组相减 np.subtract(数组1,数组2) |
maximum | 最大值计算 |
minimum | 最小值计算 |
mod | 求模运算 |