呀~博主是正在学习数据分析的一员,记录的是自己学习过程中总结的知识点,肯定有不完善的地方,如有问题可以私聊我改正,共同学习进步。希望大家都能保持学习的热情,坚持自己,不断超越自己! 博客地址: qxi的博客
PS:我先简单说明一下,从统计学语言的角度来看, 一维数组
可以称为vector(向量);而二维数组可以称为matrix(矩阵);三维以上的就没有特殊名称,但是全都称为array,向量、矩阵都可以看作是数组的特殊形式。所以凡是涉及到二维数组的,我的文章里面都直接称为 矩阵
了,一维数组我有时称之为 序列
(类似列表)。 #这篇文章主要总结的是numpy模块中生成数组的几个函数,包括生成零矩阵,随机矩阵以及如何指定产生几行几列的矩阵,重点讲了array()函数,arange()函数,reshape()函数以及repeat()函数。# 1.numpy模块中的 array()
函数 ①将列表转化为矩阵,列表里每个元素为一行。 两行起就需要([[],[]])切记不要少了中括号
import numpy as np array=np.array([[1,2,3],[2,2,3]]) print(array)
②判断该矩阵的维度(都是二维),用 array.ndim
;判断几行几列,用 array.shape
;判断有多少元素,用 array.size
import numpy as np array=np.array([[1,2,3],[2,2,3]]) print(array) print('number of ndim:',array.ndim) print('shape:',array.shape) print('size:',array.size)
运行结果:
[[1 2 3] [2 2 3]] number of ndim: 2 shape: (2, 3) size: 6
2.定义矩阵的数据形式 整数形式:
import numpy as np a=np.array([1,2,3],dtype=np.int) print(a) print(a.dtype)
运行结果,默认为32位(主要看各位安装的python版本):
[1 2 3] int32
小数形式:
import numpy as np a=np.array([1,2,3],dtype=np.float) print(a) print(a.dtype)
运行结果,默认为64位:
[1. 2. 3.] float64
3.生成零矩阵,不用array函数了,用 zeros()
,括号内需要元组来定义生成几行几列,比如这里(3,4),注意不用少了小括号
import numpy as np a=np.zeros((3,4)) print(a)
运行结果:
[[0. 0. 0. 0.] [0. 0. 0. 0.] [0. 0. 0. 0.]]
生成全部为1的矩阵, ones()
import numpy as np a=np.ones((3,4),dtype=np.int16) print(a)
运行结果:
[[1 1 1 1] [1 1 1 1] [1 1 1 1]]
生成全部为2的矩阵,直接在上面矩阵的基础上乘上2
import numpy as np a=np.ones((3,4),dtype=np.int16)*2 print(a)
运行结果:
[[2 2 2 2] [2 2 2 2] [2 2 2 2]]
empty()
随机生成矩阵,数字接近于0,注意括号内也是需要 元组
import numpy as np a=np.empty((3,4)) print(a)
运行结果:
[[6.01347002e-154 7.13147307e+252 7.29542036e+175 9.49697009e-095] [2.29621239e+155 1.72979452e+156 5.86300898e-101 1.20270795e-153] [8.90301763e+247 6.01346953e-154 7.48960144e+247 4.47590761e-091]]
5.利用 arange()
函数生成一维数组,形式是 arange(m,n,k)
,从m显示到n,然后是以k为间隔的,左取右不取,n是不取的。
import numpy as np a=np.arange(10,20,2) #2表示间隔为2 print(a)
运行结果:
[10 12 14 16 18]
arange(12)默认0-12,间隔为1
import numpy as np a=np.arange(12) print(a)
运行结果:
[ 0 1 2 3 4 5 6 7 8 9 10 11]
6.利用 reshape(m,n)
将一维数组转换为多维数组,指定生成m行n列的矩阵,这里 特别说明 一下可以用reshape((m,n))也可以把里面的括号去掉,不用元组形式也可以,不会报错。 ①指定生成几行几列矩阵
import numpy as np a=np.arange(12).reshape(3,4) print(a)
运行结果:
[[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]]
② reshape(m,-1)
与 reshape(-1,m)
reshape(m,-1)是将数组转化成m行,不知道多少列 reshape(-1,m)是将数组转化成m列,不知道多少行
import numpy as np a=np.arange(16).reshape(2,8) print(a) print(np.arange(16).reshape(4,-1)) #列数自动计算为col=16/4=4 print(np.arange(16).reshape(8,-1)) #列数自动计算为col=16/8=2 print(np.arange(16).reshape(10,-1)) #由于col=16/10!=int,结果报错
运行结果:
[[ 0 1 2 3 4 5 6 7] [ 8 9 10 11 12 13 14 15]] [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11] [12 13 14 15]] #自动计算为4列 [[ 0 1] [ 2 3] [ 4 5] [ 6 7] [ 8 9] [10 11] [12 13] [14 15]] #自动计算为2列
repeat(x,n)
函数 最简单的形式repeat(x,n)的意思是重复数字x,重复n次形成 一维数组
,具体看例子np.repeat(3,4); 当指定axis=0时,则逐行操作,增加行数,axis=0时则增加列数; 当x为数组时,则又会产生不同的情况,具体看例子
import numpy as np print(np.repeat(3, 4)) #最简单的形式 x = np.array([[1,2],[3,4]]) print(x) print(np.repeat(x, 3)) #没有axis,只会变成一维数组 print(np.repeat(x, 3, axis=1)) #增加列数 print(np.repeat(x, 3, axis=0)) #增加行数 print(np.repeat(x,[1,2], axis=0)) #增加行数,分别为一次和两次
运行结果:
[3 3 3 3] #np.repeat(3,4)的结果 [[1 2] [3 4]] #数组x [1 1 1 2 2 2 3 3 3 4 4 4] # 没有限定axis [[1 1 1 2 2 2] [3 3 3 4 4 4]] #axis=1表示逐列 [[1 2] [1 2] [1 2] [3 4] [3 4] [3 4]] #axis=1表示逐列 [[1 2] [3 4] [3 4]]
8.numpy模块中random模块的常见函数, ① random.random((m,n))
表示随机生成m行n列的矩阵,数字是0-1之间的浮点数 ② random.randint(x,size=(m,n))
是用size指定生成几行几列的矩阵,数子是0-x之间的整数
import numpy as np print(np.random.random((2,3))) #直接用元组形式指定几行几列 print(np.random.randint(10,size=(2,3))) #用size指定几行几列
运行结果:
[[0.81779566 0.02860575 0.86313598] [0.17711258 0.1565987 0.63166456]] [[7 1 5] [3 1 5]]
9.利用 flatten()
函数将多维数组转换为一维数组
import numpy as np a=np.array([[1,2,3],[4,5,6]]) b=a.flatten() print(a) print(b)
运行结果:
[[1 2 3] [4 5 6]] [1 2 3 4 5 6] #变成一维数组辽
10.利用 linspace()
函数生成的也是一维数组,形式是arange(m,n,k),表示把m-n分割成k个点显示。
import numpy as np a=np.linspace(1,10,5) print(a)
运行结果:
[ 1. 3.25 5.5 7.75 10. ]
然后利用reshape((m,n))生成二维数组,指定几行几列
import numpy as np a=np.linspace(1,10,6).reshape((2,3)) print(a)
运行结果:
[[ 1. 2.8 4.6] [ 6.4 8.2 10. ]]
_好啦,关于numpy模块基础知识的介绍就先到这里啦~后期会持续更新的哟,欢迎大家提出问题一起学习! 我主要针对的学习对象是刚入门学习python数据分析的小伙伴哟,如果觉得对你有一点点帮助的话就点个赞呗,还可以关注我,后期可以一起学习讨论。 _ ``