Python之NumPy库
NumPy库的名字由“Numerical Python”缩写而来。NumPy库是pandas库的基础,NumPy库的知识并不复杂,主要是为了学习pandas库做铺垫。如果是利用Anaconda安装的Python,则自带NumPy库,无须单独安装。
注:以下示例代码均是在Jupyter Notebook上进行的。
1.NumPy库与数组
NumPy库的主要特点是引入了数组的概念,和python的列表有点类似,上代码演示:
import numpy as np # 用np代替numpy,让代码更简洁
a = [1, 2, 3, 4] # 创建列表a
b = np.array([1, 2, 3, 4]) # 从列表a创建数组b,array就是数组的意思
print(a)
print(b)
print(type(a)) # 打印a的类型
print(type(b)) # 打印b的类型
第1行引入NumPy库的代码写为“import numpy as np”,这样之后编写代码就可以用np代替numpy,比较简洁。第3行代码中的np.array()函数用于从列表创建数组。输出结果如下:
接下来通过索引和切片访问列表和数组中的元素,代码如下:
print(a[1])
print(b[1])
print(a[0:2])
print(b[0:2])
输出结果如下:
从输出结果可以看出,列表和数组有着相同的索引机制,唯一的区别就是数组中的元素通过空格分隔,而列表中的元素通过逗号分隔。
2.数组与列表的区别
从以上的分析可以看出,NumPy的数组和列表非常的相似,之所以NumPy要引入数组,而不直接使用列表,主要有以下两个目的。
1.为了能更好的支持数学运算,上代码演示:
c = a * 2
d = b * 2
print(c)
print(d)
运行结果如下。
可以看到同样做乘法运算,列表是把元素复制了一遍,而数组则是对每个元素做了乘法。
2.列表存储的是一维数据,而数组则能存储多维数据,一维可以理解为一行,多维则类似于平面(二维)、立方体(三维)这样,表格就是二维的,有行、列属性,做一下代码示例,理解起来就会更直观些:
e = [[1, 2], [3, 4], [5, 6]] # 列表里的元素为小列表,存储在一行
f = np.array([[1, 2], [3, 4], [5, 6]]) # 创建二维数组的一种方式,以行、列的表格方式存储
列表e和数组f的打印输出结果如下:
可以看到,列表e虽然包含3个小列表,但其结构是一维的。而数组f则是3行2列的二维结构。
3.创建数组的几种方式
- NumPy.array(列表),如以下代码示例:
# 创建一维数组
b = np.array([1, 2, 3, 4])
# 创建二维数组
f = np.array([[1, 2], [3, 4], [5, 6]])
- np.arange()函数来创建一维数组,括号里可以输入1~3个参数,会得到不同的效果。演示代码如下:
# 1个参数:参数值为终止值,起始值取默认值0,步长取默认值1,左闭右开
x = np.arange(5)
# 2个参数:第1个参数为起始值,第2个参数为终止值,步长取默认值1,左闭右开
y = np.arange(5, 10)
# 3个参数:第1个参数为起始值,第2个参数为终止值,第3个参数为步长,左闭右开
z = np.arange(5, 10, 0.5)
x、y、z的打印输出结果如下:
3. np.random中的函数可以创建随机一维数组.
4. np.arange()函数和reshape()函数,可以创建二维数组。
a = np.arange(12).reshape(3, 4)
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!