Numpy基础教程
目录
基本概念:
数组:具有相同类型的数据组成的序列,且该序列是有序集合。
数组中的每一个数据称为数据元素。
数组元素由其所在的位置序号来区分。
一维数组是向量,二维数组是矩阵,三维数组.........
首先需要导入:
import numpy as np
numpy中的array创建:
-
# 创建一维数组 array_1 = np.array([1,2,3])
-
# 创建二维数组(多维数组也同理) array_2 = np.array([[1,2,3], [4,5,6]]) # 可以放在同一排,也可以对齐
-
# 生成全零的形状为[2,3]的数组,用括号也可以(2,3) o = np.zeros([2,3])
-
# 生成全一的形状为[3,4]的数组 one = np.ones([3,4])
-
# 生成全为空的[3,3]的数组,其实是生成很小很小的数 empty = np.empty([3,3])
-
# 生成有序的一维数组 youxu = np.arange(10) # 0-9总的10个数 # 将一维数组重成其他形状 a = np.array(12) b = a.reshape([3,4])
numpy中的array形状,纬度,大小:
-
# 数组的形状,维度,大小 print(array_2.shape) print(array_2.ndim) print(array_2.size)
numpy中的array加减法,次方,三角函数,乘法:
-
# array的减法和加法 a = np.array([10,20,30,40]) b = np,arange(4) c = a-b d = a+b
-
# array的次方 a = np.array([10,20,30,40]) b = a**2 print(b)
-
# numpy中的三角函数sin cos tan a = np.array([[1,2,3],[2,3,4],[3,4,5]])
-
# 判断各个数,返回True Flase a = np.arange(4) print(a<3) print(a>3)
-
# numpy 的乘法(每个元素相乘和矩阵相乘) a = np.array([[2,3],[3,4]]) b = np.arange(4).reshape([2,2]) # 每个元素相乘 c = a*b # 矩阵相乘 d = np.dot(a,b) d_2 = a.dot(b)
numpy中的最大小值,求和,平均值,中位数:
-
# 矩阵元素的最大值最小值,求和,平均值,中位数 # 最大值 a = np.arange(2,14).reshape([3,4]) np.max(a) # 全部元素的最大值 np.max(a,axis=0) # 按列 每列的最大值 np.max(a,axis=1) # 按行 每行的最大值 # 最小值同理 np.min(a) np.min(a,axis=0) np.min(a,axis=1) # 求和同理 np.sum(a) np.sum(a,axis=0) np.sum(a,axis=1) # 平均值同理 np.mean(a) np.average(a) # 中位数同理 np.median(a)
numpy中值对应的索引:
-
# 返回索引 # 最大值索引 np.argmax(a) # 全部元素最大值的索引 np.argmax(a,axis=0) # 按列 每列的最大值索引 np.argmax(a,axis=1) # 按行 每行的最大值索引 # 最小值索引同理 np.argmin(a) np.argmin(a,axis=0) np.argmin(a,axis=1)
numpy中的累和,累差:
-
# 求累和和累差 a = np.arange(2,14).reshape([3,4]) # 累和 np.cumsum(a) # 累差 np.diff(a)
numpy中判断非零元素:
-
# 判断元素非零 a = np.array([[1,2],[0,3]]) np.nonzero(a) # 0行0列非零,0行1列非零,1行1列非零
numpy中Transpose:
-
# 矩阵的转置,行变列,列变行 a = np.arange(6).reshape([2,3]) print(a,a.shape) b = np.transpose(a) print(b,b.shape)
numpy中np.clip 大小阈值:
-
# np.clip 给定min和max,小于最小值元素的变为最小值,大于最大值的元素变为最大值,介于中介的保持不变 a = np.array([[2,3,4],[3,7,8],[20,45,6]]) np.clip(a,6,10)
numpy中索引对应的值:
-
# numpy的索引 # 一维数组的索引 one_array = np.arange(2,14) print(one_array) print(one_array[3]) # 想要显示5的话
-
# 二维数组的索引 two_array = np.arange(2,14).reshape([3,4]) print(two_array) # 想要显示第二行 print(two_array[1]) print(two_array[1,:]) # 想要显示第三列 print(two_array.T[2]) # 想要显示10 print(two_array[2][0]) print(two_array[2,0]) # 想要显示[11,12,13] print(two_array[2,1:4])
numpy中的迭代:
-
two_array = np.arange(2,14).reshape([3,4]) # 迭代行 for row in two_array: print(row) # 迭代列 for col in two_array.T: print(col) # 迭代每一个元素 print(two_array.flatten()) for item in two_array.flat: print(item)
numpy中的数组矩阵合并:
-
# 合并 # a,b是一维数组 a = np.array([1,1,1]) b = np.array([2,2,2]) # 上下合并后变成二维矩阵 print(np.hstack((a,b))) # horizontal stack 左右合并 print(np.vstack((a,b))) # vertical stack 上下合并 # 直接给一维数组增加新的纬度 print(a[np.newaxis,:]) # 在行上增加 print(a[:,np.newaxis]) # 在列上增加 c = a[:,np.newaxis] d = b[:,np.newaxis] merge_vstack = np.vstack((c,d,d,c)) # 上下合并 merge_hstack = np.hstack((c,d,d,c)) # 左右合并 merge_axis0 = np.concatenate((c,d,d,c), axis=0) # axis=0 上下合并 merge_axis1 = np.concatenate((c,d,d,c), axis=1) # axis=1 左右合并 print("merge_vstack:",merge_vstack ) print("merge_hstack:",merge_hstack) print("merge_axis0:",merge_axis0) print("merge_axis1:",merge_axis1)
numpy中的数组矩阵分割:
-
# 分割 a = np.arange(12).reshape([3,4]) # 水平均等分割 print(np.split(a,2,axis=1)) print(np.hsplit(a,2)) # 上下均等分割 print(np.split(a,3,axis=0)) print(np.vsplit(a,3)) # 不均等分割不能用np.split(),要用np.array_split() print(np.split(a,3,axis=1)) # 这句会报错 print(np.array_split(a,3,axis=1))
numpy中的赋值和deepcopy:
-
# 赋值 a,b,c,都会关联 a = np.arange(4) b = a c = a d = b b is a d is a a[0] = [13] print(a) print(b) print(c) print(d) # deep copy 不关联 b = a.copy() # deep copy b is a print(a) print(b) a[1:3] = [100,99] print(a) print(b)
来源:CSDN
作者:troublemaker、
链接:https://blog.csdn.net/weixin_44912159/article/details/104102711