python机器学习--数据分析的基本武器--Numpy基础知识详解

思维导图:

 

目录:

一、Numpy与数组

二、列表与Numpy数组的区别

三、创建数组的几种方式


1.Numpy与数组

        @1:演示操作

import numpy as np #导入numpy模块
a = [12, 34, 56, 33] #创建一个列表
b = np.array(a) #将列表转换为数组
print(a)
print(b)
print(type(a))
print(type(b))

        #运行结果
[12, 34, 56, 33]
[12 34 56 33]
<class 'list'>
<class 'numpy.ndarray'>

        @2:接下来通过列表索引和数组索引来访问列表和数组中的元素,代码如下:

print(a[2]) 
print(b[3])
print(a[0:3]) 
print(b[0:3])

        #运行结果

56
33
[12, 34, 56]
[12 34 56]

        分析:由上面的运行结果我们不难观察到数组与列表的最大区别在于(数组里面是由空格符隔开,而列表里面是由逗号隔开)

2.列表与Numpy数组的区别

        @1:数组进行数学运算相对列表比较方便,而由相同数字组成的列表和数组,计算出来的结果是不同的

        @2:数组可以支持多维的数据,而列表只能储存一维的数据

        @3:列表是由逗号隔开,而数组是由空格符隔开

        @1的讲解,下面我们来进行操作演示,代码如下:

import numpy as np      #导入numpy模块
a = [2, 3, 4, 5]        #创建一个列表
b = np.array(a)         #将列表转换为数组
c = 2*a                 #列表的运算
d = 2*b                 #数组的运算
print("c的结果为:", c)
print("d的结果为:", d)     

        #运行结果

c的结果为: [2, 3, 4, 5, 2, 3, 4, 5]
d的结果为: [ 4  6  8 10]

        分析:通过上面的操作可以清晰的看出,2倍的数组和2倍列表,数组是运算原理是相应的位置上扩大两倍,而列表运算原理是将原来的列表复制下来再组合成列表。

        @2的讲解操作演示,代码如下:

import numpy as np      #导入numpy模块
e = [[1,2], [3,4], [5,6]] # 列表里的元素为小列表
f = np.array([[1,2], [3,4], [5,6]]) # 创建二维数组的一种方式
print("列表:", e)
print("二维数组:", f)   

        #运行结果:

列表: [[1, 2], [3, 4], [5, 6]]
二维数组: [[1 2]
          [3 4]
          [5 6]]

        分析:可以看到列表虽然包含着三个小列表,但其还是一个一维的结构,而创建的二维数组则是一个三行两列的二维结构内容,这个也是之后学习pandas库的核心内容了,因为数据数据处理中经常用到二维数组,也即二维表格结构。

3.创建数组的几种方式

        @1:操作演示

import numpy as np             #导入numpy模块
c = [1,23,3,4,5]
d = np.array(c)           
e = [[1,2], [3,4], [5,6]]    # 列表里的元素为小列表
f = np.array(e)              # 创建二维数组的一种方式
print("一维数组:", d)
print("二维数组:", f)     

        #运行结果:

一维数组: [ 1 23  3  4  5]
二维数组: [[1 2]
          [3 4]
          [5 6]]

        @2:除此之外,还有一些常见的创建数组的方式,这里以一维数组为例,我们还可以采用np.arange()函数来产生一维数组,其中括号里可以选择1个或2个或3个参数,代码如下:

import numpy as np
# 一个参数 参数值为终点,起点取默认值0,步长取默认值1
x = np.arange(10)
# 两个参数 第一个参数为起点,第二个参数为终点,步长取默认值1,左闭右开
y = np.arange(6,15)
# 三个参数 第一个参数为起点,第二个参数为终点,第三个参数为步长,左闭右开
z = np.arange(5, 10, 0.5)
print("x:",x)
print("y:",y)
print("z:",z)

         #运行结果:

x: [0 1 2 3 4 5 6 7 8 9]
y: [ 6  7  8  9 10 11 12 13 14]
z: [5.  5.5 6.  6.5 7.  7.5 8.  8.5 9.  9.5]

        @3:我们还可以通过np.random模块来创建随机一维数组,比如可以通过np.random.randn(5)来创建一个服从正太分布(均值为0,方差为1的分布)的5个随机数一维数组,代码如下:

import numpy as np
a = np.random.randn(5)
print("a:",a)

       #运行结果:

a: [ 0.75296369 -0.26186535  0.82455397 -0.26515191  0.0790009 ]

        @4:如果把np.random.randn(5)换成np.random.rand(5),那生成的就是0-1之间的5个随机数,代码如下:

import numpy as np
a = np.random.rand(5)
print("a:",a)

        #运行结果:

a: [0.70213035 0.97106942 0.26096476 0.13735899 0.06844942]

        @5:至于二维数组的创建与学习,可以利用一维数组中的np.arange()函数和reshape方法产生一个二维数组,比如将0到16个数转换成4行4列的二维数组,代码如下:

import numpy as np
a = np.arange(16).reshape(4,4)
print("a:", a)

        #运行结果:

a: [[ 0  1  2  3]
   [ 4  5  6  7]
   [ 8  9 10 11]
   [12 13 14 15]]

        @6:这里再简单提一种随机二维数组的创建,代码如下。其中np.random.randint()函数用来创建随机整数,括号里第一个元素0表示起始数,第二个元素10表示终止数,第三个元素(4, 4)则表示生成一个4行4列的二维数组,代码如下:

import numpy as np
a = np.random.randint(0, 10, (4, 4))
print("a:", a)

        #运行结果:

a: [[4 0 7 4]
   [6 1 3 0]
   [7 1 9 7]
   [2 4 6 2]]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小土狗TE

你小小的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值