网站首页 > 基础教程 正文
前提说明:1.希望读者可以自行把代码部分进行测试运行一下以便可以真正明白代码的意思,
2.numpy模块没有安装的要提前安装(pip install numpy)
3.以下代码都以np代表numpy(import numpy as np)
1.array类型
*创建一维数组
np.array([1,2,3,4,5,6,7])
*创建二维数组
np.array([[1,2,3],[1,2,3],[1,2,3]])
2.查看数据类型
a = np.array([1,2,3,4,5,6,7])
a.dtype
3.转换数据类型
a = np.array([1,2,3,4,5,6,7])
a.astype(np.int64)
numpy的数据类型
4.array的属性
a = np.array([1,2,3,4,5,6,7])
a.flags //array的标志位
a.shape //返回的是元组,代表array几维,每一维几个元素,
a.strides //每个维度元素之间的字节数间隔
a.ndim //创建的数组维数
a.data //存储的数据块
a.size //总的元素个数
a.itemsize //数组中每个元素所占的字节数
a.nbytes //总的字节数
a.base //输出x引用的那个数据的内容,引用的什么,输出什么
5.array矩阵的生成
*np.zeros(shape=(n,m),dtype='')
//生成n?m维的0矩阵,默认生成的元素都是浮点型,若想指定类型,dtype='数据类型'
*np.ones(shape=(n,m),dtype='')
//生成n?m维的1矩阵,默认生成的元素都是浮点型,若想指定类型,dtype='数据类型'
*np.full(shape=(n,m),fill_value=,dtype='')
//生成n?m维的fill_value矩阵,默认生成的元素都是int32类型
*np.arange()
//arange和python中的range类似,三个参数代表的意思都一样,但arange返回的是 array类型数据(一维数组),range返回的是一个生成器,并且arange支持步长为浮点数
*np.linspace(n,m,k)
//生成从n到(m-1)之间k个元素的一维矩阵
*np.random.randint(n,m,size=(x,y))
//生成x?y的从n到m-1随机生成的整数的矩阵
*np.random.random(size=(x,y))
//生成x?y的从0到1的随机小数的矩阵
*np.random.normal(n,m,size=(x,y))
//生成x?y,以n为平均值,以m为方差的矩阵,方差越小,数据越精确
6.array矩阵的基本操作
*索引和切片(所有的切片操作都是左闭右开)
#一维数组
x = np.arange(10) //array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
x[0] //索引操作 0
x[0:9:2] //切片操作,第三个值是步长,即隔几个取一个 0 2 4 6 8
#二维数组
X =np. arange(15)
X1 = X.reshape(3,5) //reshape函数,调整维数
###
[[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]]
###
X1[0][1] //索引操作,[行][列]
X1[0,1] //索引操作,[行,列]
X1[0:3,0:3] //切片操作 前三行和前三列形成的子阵
###
[[ 0, 1, 2],
[ 5, 6, 7],
[10, 11, 12]]
###
*合并和分割
*合并操作
#一维数组
a = np.arange(14,20) //[14, 15, 16, 17, 18, 19]
b = np.arange(20,26) //[20, 21, 22, 23, 24, 25]
np.concatenate([a,b]) //[14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]
#二维数组
x = np.arange(0,10).reshape(2,-1) //reshape函数第二个值为-1,会自动生成与行对应的列数
###
[[0, 1, 2, 3, 4],
[5, 6, 7, 8, 9]]
###
y = np.arange(10,20).reshape(2,-1)
###
[[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19]]
###
np.concatenate([x,y],axis=0) #axis=0按行合并 axis=1按列合并
###
[[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19]]
###
*分割操作
#一维数组
x1,x2,x3,x4,....... = np.split(array,[n1,n2,n3,n4,.......])
//以array中的n1,n2,n3,n4,.......为分割点进行分割分成n1,n2,n3,n4,.......个数组存储在 x1,x2,x3,x4,.......中
#二维数组
x1,x2,x3,x4,....... = np.split(array,[n1,n2,n3,n4,.......], axis=1)
//二维数组的操作和一维数组一样,就是加个axis,axis=0按行分割,axis=1按列分割
7.array矩阵的运算操作
#所有的算术运算符和数学函数都是对矩阵中的每个元素进行操作
*np.linalg.inv(A) //对A求逆矩阵
*np.dot(A,D) //dot函数可以计算两个矩阵的乘积
*求转置矩阵 A.T
8.array矩阵的聚合运算
np.max()#最大值
np.min(x)#最小值
np.sum(x)#求和
np.median(x)#中位数
np.percentile(x,q=50)#求百分数,q=50 ==》 50%
np.var(x)#方差
np.std(x)#标准差
np.any(x==0)#x中的数据是否有一个等于0 返回bool类型
np.all(x==0)#x中的数据是否全部等于0 返回bool类型
x.mean()#平均值
#二维数组的所有操作都和上面一样,如果想按列求,axis=0,按行求axis=1
例:np.sum(X,axis=1)
9.arg索引运算
arg索引运算是拿到值对应的索引值
a = np.arange(10) //[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
np.random.shuffle(a)
// shuffle(a) 将a矩阵乱序排放 [6, 7, 9, 4, 5, 1, 8, 3, 0, 2]
np.argmin(a) //8 索引为8对应的值是0(最小值),即arg索引运算是拿到值对应的索引值
###
所有的聚合运算都可以进行arg索引运算
###
np.partiton(a,kth=n)
###
从第n个位置划分 n前面的都是比较小的数据群体,n后面的都是比较大的数据群体,partition就是把较大的数据和较小的群体进行划分,不考虑排序问题
###
10.FancyIndex运算
//FancyIndex 就是把一个列表当作一个数组的索引值进行访问
#一维矩阵
x = np.arange(16)
np.random.shuffle(x)
//[11, 10, 12, 9, 13, 14, 15, 3, 6, 2, 8, 1, 4, 0, 7, 5]
x_index = [0,1,2,3]
x[x_index] //把数组x_index作为索引值进行访问数组x
//[11, 10, 12, 9]
#二维矩阵
X = x.reshape(4,4)
###
[[11, 10, 12, 9],
[13, 14, 15, 3],
[ 6, 2, 8, 1],
[ 4, 0, 7, 5]]
###
X_h = [0,1,2]
X_v = [0,1,2]
X[x_h,x_v] //X[x_h,x_v]相当于 X[0,0] X[1,1] X[2,2]
#还可以使用bool类型当作索引值
x>10
###
[ True, False, True, False, True, True, True, False, False,False, False, False, False, False, False, False]
###
x[x>10] //True可以访问到,False不可以访问到
// [11, 12, 13, 14, 15]
猜你喜欢
- 2024-10-12 一文掌握Numpy矩阵 numpy矩阵乘法实现原理
- 2024-10-12 矩阵运算库:Numpy 矩阵运算库不支持点乘
- 2024-10-12 Python 的整数与 Numpy 的数据溢出
- 2024-10-12 整理20个Pandas统计函数 pandas函数汇总
- 2024-10-12 一文搞定Pandas核心概念之Series pandas的两大核心
- 2024-10-12 关于类型为numpy,TensorFlow.tensor,torch.tensor的shape变化
- 2024-10-12 Numpy基础用法汇总 numpy基础及取值操作
- 2024-10-12 想学好Python数据分析,一定要掌握的重要模块之numpy
- 2024-10-12 numpy基础之ndarray的数据类型dtype
- 2024-10-12 Python数据分析笔记#5.1 Numpy-多维数组
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)