思维导图:
目录:
一、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)