Numpy库与数组 | 更文挑战

318 阅读2分钟

“这是我参与更文挑战的第2天,活动详情查看: 更文挑战

NumPy库的主要特点是引入了数组的概念。数组其实和列表有点类似,所以下面借助列表来初步认识数组的基本概念。演示代码如下。

import numpy as np
a = [1,2,3,4]
b = np.array([1,2,3,4])
print(a)
print(b)
print(type(a))
print(type(b))

第1行引入NumPy库的代码写为“import numpy as np”,这样之后编写代码就可以用np代替numpy,比较简洁。第3行代码中的np.array()函数用于从列表创建数组。输出结果如下

[1,2,3,4]
[1 2 3 4]
#a的类型为列表
#b的类型为数组

接下来通过索引和切片访问列表和数组中的元素,代码如下。

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

输出的结果如下:

1
2
[1,2]
[1 2]

从输出结果可以看出,列表和数组有着相同的索引机制,唯一的区别就是数组中的元素通过空格分隔,而列表中的元素通过逗号分隔。

从上面的分析得知数组和列表非常相似,那么为什么我们在数据分析中要使用数组而不使用列表呢?其原因很多,这里主要讲两点。第一,NumPy作为一个专门用于数据处理的库,能很好地支持一些数学运算,而用列表进行数学运算则较为麻烦。演示代码如下。

c = a*2
d = b*2
print(c)
print(d)

运行结果如下:

[1,2,3,4,1,2,3,4]
[2 4 6 8]

可以看到同样做乘法运算,列表是把元素复制了一遍,而数组则是对每个元素做了乘法。第二,列表存储的是一维数据,而数组则能存储多维数据。一维数据和多维数据是什么意思呢?我们可以借用立体几何中的概念来帮助理解:一维类似一条直线,多维则类似平面(二维)或立体(三维)等。列表中的数据是一维的,而Excel工作表中的表格数据则是二维的。演示代码如下。

e = [[1,2],[3,4],[5,6]]
f=np.array([[1,2],[3,4],[5,6]])

列表e和数组f的打印输出结果为:

[[1,2],[3,4],[5,6]]
[[1 2]
[3 4]
[5 6]]

可以看到,列表e虽然包含3个小列表,但其结构是一维的。而数组f则是3行2列的二维结构,这也是之后学习pandas库的核心内容,因为数据处理中经常用到二维数组,即二维的表格结构。