python数据分析-numpy模块基础知识(1)

呀~博主是正在学习数据分析的一员,记录的是自己学习过程中总结的知识点,肯定有不完善的地方,如有问题可以私聊我改正,共同学习进步。希望大家都能保持学习的热情,坚持自己,不断超越自己!
博客地址: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]]

4.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列

7.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数据分析的小伙伴哟,如果觉得对你有一点点帮助的话就点个赞呗,还可以关注我,后期可以一起学习讨论。

``

  • 22
    点赞
  • 68
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值